Diciamo doc.txt
contienePerché non funziona .rstrip (' n')?
a
b
c
d
e che il mio codice è
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
perché ottengo gli stessi valori?
Diciamo doc.txt
contienePerché non funziona .rstrip (' n')?
a
b
c
d
e che il mio codice è
f = open('doc.txt')
doc = f.read()
doc = doc.rstrip('\n')
print doc
perché ottengo gli stessi valori?
str.rstrip()
rimuove il finale newline, non tutte le nuove righe nel mezzo. Hai una lunga stringa, dopo tutto.
Utilizzare str.splitlines()
per suddividere il documento in linee senza righello; si può rientrare, se si vuole:
doclines = doc.splitlines()
doc_rejoined = ''.join(doclines)
ma ora doc_rejoined
avrà tutte le linee che funzionano insieme senza un delimitatore.
rstrip
strisce di spazi finali dell'intera stringa. Se ti aspettavi che funzionasse su singole linee, dovresti prima dividere la stringa in linee usando qualcosa come doc.split('\n')
.
A causa di leggere l'intero documento in una stringa che assomiglia:
'a\nb\nc\nd\n'
Quando si esegue un rstrip('\n')
su quella stringa, solo il più a destra \n
saranno rimossi, lasciando tutti gli altri intatti, così la stringa sarebbe:
'a\nb\nc\nd'
La soluzione sarebbe quella di dividere il file in linee e quindi a destra striscia ogni linea. Oppure basta sostituire tutti i personaggi di nuova riga con niente: s.replace('\n', '')
, che ti dà 'abcd'
.
Prova a modificare:
with open('doc.txt') as f:
for line in f:
print line,
Spiegazione:
with
, che si occupa di chiudere il file alla finefor line in f
rstrip()
ora, perché stiamo leggendo e stampa una riga alla voltaConsiderare l'utilizzo di replace e sostituire ogni istanza di '\ n' con ''. Questo eliminerebbe tutti i nuovi caratteri di riga nel testo di input.
Oppure semplicemente 'replace ('\ n', '')'. Le terminazioni di linea non avvengono ovunque tranne alla fine di una linea. – user2357112
@ user2357112 Risposta migliore. – Deneb