2013-08-16 17 views

risposta

14

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.

2

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').

+2

Oppure semplicemente 'replace ('\ n', '')'. Le terminazioni di linea non avvengono ovunque tranne alla fine di una linea. – user2357112

+0

@ user2357112 Risposta migliore. – Deneb

3

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'.

1

Prova a modificare:

with open('doc.txt') as f: 
    for line in f: 
     print line, 

Spiegazione:

  • Il metodo consigliato per aprire un file sta usando with, che si occupa di chiudere il file alla fine
  • È possibile scorrere su ogni riga del file utilizzando for line in f
  • Non è necessario chiamare rstrip() ora, perché stiamo leggendo e stampa una riga alla volta
0

Considerare l'utilizzo di replace e sostituire ogni istanza di '\ n' con ''. Questo eliminerebbe tutti i nuovi caratteri di riga nel testo di input.