Mam problem z usunięciem spacji, która występuje w dowolnym ciągu znaków podawanym jako argument do funkcji, przed kropką. Kod programu https://ideone.com/6L3xGB
0
1
Trochę po łebkach:
print('.'.join([x.rstrip() for x in raw_input().split('.')]))
0
Działa pięknie tylko ja bym na to myślę nie wpadł prędko, czy mógłbyś to jakoś wytłumaczyć albo przerobić to co ja miałem? Bo co robi rstrip() input() i join() wiem, natomiast nie rozumiem dlaczego w kwadratowym nawiasie i ta pętla for tak wygląda..
1
Zwie się to list comprehension
: http://www.secnetix.de/olli/Python/list_comprehensions.hawk
2
Bardziej po ludzku :)
def spaceDotReplaceAll(s):
return s.replace(" .", ".")
def spaceDotReplaceFirst(s):
return s.replace(" .", ".", 1)
testStr = "one . dwa. three . . ."
print (spaceDotReplaceAll(testStr))
print (spaceDotReplaceFirst(testStr))
Przecież chcemy zamienić wszystkie " ."
na "."
.
Jeśli chodzi o Twój kod @luckiblue :
- replace zwraca nowy string, a nie zmienia istniejącego,
- kiedy skrócisz string
tekst
wewnątrz pętli, to pętla będzie wyjeżdżać poza zakres.