[Python] togliere spazi finali da ogni singola riga di un testo

Andrea Ambu andreambu a gmail.com
Dom 2 Set 2012 09:42:30 CEST


2012/9/2 Federico Bruni <fedelogy a gmail.com>:
> Buongiorno a tutti
>

Ciao Federico


> s = 'Ciao mondo    '
> s = s.rstrip()
> print(s)
> Ciao mondo
>
> Questo funziona.
> Se invece ho una stringa con pił linee ho dei problemi.
> Ho provato questo ma non va:
>
> s = 'Ciao mondo    \nsono un newbie  '
> for line in s:
>     s = line.rstrip()
> print(s)
>
> Ha cancellato tutto.
> Dove sbaglio?
> Mi sapete dire anche cosa mi devo leggere della documentazione di python
> (nel tutorial?) per capire il mio errore?
>

Ci sono un po' di cose strane, mi pare che tu voglia come risultato:
s = 'Ciao mondo\nsono un newbie', giusto?

Se vuoi rimuovere gli spazi a destra di ogni linea devi iterare sulle
linee, "for line in s" non funziona come pensi, in quel modo stai
iterando sui singoli caratteri di s.

Dovresti fare: "for line in s.split('\n')"

Inoltre riassegni s dentro il for, e questo non e` cosa buona perche`
probabilmente non fa quello che ti aspetti di nuovo, potresti fare una
cosa del genere:

clean_lines = []
for line in s.split('\n'): clean_lines.append(line.rstrip())
s = '\n'.join(clear_lines)

O nella versione piu` compatta:
s = '\n'.join(line.rstrip() for line in s.split('\n'))

Guarda come funzionano join e split su
http://docs.python.org/library/string.html e come si itera su una
stringa.

Ciao,
Andrea


Maggiori informazioni sulla lista Python