2012-08-16 22 views
9

Ho alcuni dati di testo che sta stampando i caratteri reali "\ r \ n" (quindi quattro caratteri in totale). Mi piacerebbe sostituire quei quattro personaggi con il singolo carattere "\ n", ma non riesco a far sì che Python lo faccia per me. Attualmente sto provando:Sostituzione " r n" con " n"

mytext.replace("\r\n", "\n") 

Ma che stampa solo "\ n" (due caratteri, non uno). Sento che probabilmente mi manca qualcosa di ovvio, ma ogni aiuto sarebbe apprezzato.

+2

Se si tratta di un file, è possibile leggerlo con 'open (file_name, 'rU')' e saranno tutti ''\ n'' – jamylak

risposta

15

mi consiglia di utilizzare splitlines invece di un'espressione regolare o di ricerca/sostituzione

"\n".join(mytext.splitlines()) 
+0

Questa dovrebbe essere la soluzione – geotheory

0

Siamo spiacenti, ho letto male la tua domanda:

In tal caso, si dovrebbe anteporre la stringa con ar utilizzare stringhe prime:

mytext.replace(r"\r\n", r"\n") 
+0

se" \ r \ n "- sono 4 caratteri, quindi l'eliminazione di 2 non help/ – Stals

13
mytext.replace(r"\r\n", r"\n") 

La 'R' indica una stringa grezzo, che dice a python di interpretare i backslash nel testo come caratteri letterali e non come caratteri di escape.

+2

Questo non fa nulla per me (ubuntu) – geotheory

3

"\n".join(mytext.splitlines()) Questo funziona per me. mytext.replace(r"\r\n", r"\n"), questo non funziona.

2

Questa è una soluzione per provare se uno dei precedenti non ha funzionato (che è stato il caso per me utilizzando Anaconda Distribution di Python3).

mytext.replace("\\r\\n", "\\n") 

Questo ha a che fare con \ essere utilizzato come carattere di escape. Ho pensato che le risposte di cui sopra che utilizzavano il formattatore di stringhe raw avrebbero ottenuto la stessa cosa, ma per qualsiasi ragione non funzionasse per me, e così è stato.

Problemi correlati