Python zliczanie "" w tekscie

0

Witam!!

Czy wie ktoś może jak liczyć występowanie " "(spacji) w np tekscie: ashdj ashd kajsdh kasjdh aksjdh asd ?

0

Ja bym zrobił

input = "ashdj ashd kajsdh kasjdh aksjdh asd "
print(len(input.split(" "))-1)

Ale to policzy też spacje wielokrotne.

0

a dało by się to zrobić bez split? - wiem o tym ale bez tego mi zależy .

0

No możesz re.findall() ale będzie wolniejsze i ogólnie moim zdaniem armata na muchę.

0

Aha, a jak myślisz udało by się to zrobić przy użyciu pętli for ? podzielić to i dodać do listy a potem z listy jakoś powyłapywać to ?

0

Jasne że tak, ale to jest bardzo nie-pythonowe i niskopoziomowe rozwiązanie, dlatego nawet go nie proponowałem ;] Jak chcesz takie rzeczy robić zapomocą pętli to sobie w C albo asemblerze pisz a nie w takim eleganckim języku jak python ;] Ale jak chcesz:

input = "ashdj ashd kajsdh kasjdh aksjdh asd "
counter = 0
for character in input:
    if character == " ":
        counter+=1
print(counter)

Można też inne eleganckie rozwiązanie zastosować:

input = "ashdj ashd kajsdh kasjdh aksjdh asd "
print(len(list(filter(lambda x: x==" ", input))))
0

Sam bym to zrobił przy split ale do szkoły mi jest potrzebne z pętlą ...

0

A i czy dało by rade znaleŹć miejsce wystepowania tych "" ?
das dasd
to 4

0

Można też inne eleganckie rozwiązanie zastosować:

input = "ashdj ashd kajsdh kasjdh aksjdh asd "
print(len(list(filter(lambda x: x==" ", input))))

Tutaj to dopiero z armatą wyjechałeś :P (filtery i mapy, jakkolwiek ładne, w pythonie najczęściej się zastępują list comprehension)

sum(1 if c == ' ' else 0 for c in input)

len([c for c in input if c == ' ']) # alternatywnie bliżej Twojego, 

sum(c == ' ' for c in input) # można i tak, ale to znowu brzydkie :P

Edit:

A i czy dało by rade znaleŹć miejsce wystepowania tych "" ?
das dasd
to 4

>>> "das das".find(' ')
3  #indeksujemy od 0, jak ccesz to dodaj 1

1 użytkowników online, w tym zalogowanych: 0, gości: 1