2010-12-06 18 views
26

Estoy analizando texto del archivo con Python. Tengo que reemplazar todas las líneas nuevas (\ n) con
porque este texto construirá contenido html. Por ejemplo, he aquí algo de la línea de archivo:Reemplazar n con <br />

'title\n' 

Ahora hago:

thatLine.replace('\n', '<br />') 
print thatLine 

Y todavía ver el texto con salto de línea después de ella.

+2

Considérese una CSS única solución: http://stackoverflow.com/a/7602751/ 74449 para reducir el potencial de XSS – Myster

Respuesta

35

Sólo por diversión, también se puede hacer

mytext = "<br />".join(mytext.split("\n")) 

para reemplazar todas las nuevas líneas en una cadena con <br />.

+16

Gracias por aceptar esto, pero por favor acepta la respuesta de @ Falmarri en su lugar. Es mucho más Pythonic. Aquí hay una manera más divertida y retrógrada de hacerlo. No es realmente recomendable ... –

+1

No sé si la respuesta de @Falmarri es "más Pythonic", pero es más eficiente y probablemente más rápida. – martineau

+3

@martineau: Quise decir esto en el sentido de "Debería haber una, y preferiblemente solo una, forma obvia de hacerlo". Y estoy bastante seguro de que el mío no es el indicado. –

113

thatLine = thatLine.replace('\n', '<br />')

str.replace() devuelve una copia de la cadena, que no modifica la cadena que se pasa en.

+4

Esta respuesta parece mejor que la aceptada. – SparkAndShine

+0

Bienvenido a StackOverflow. –

7
thatLine = thatLine.replace('\n', '<br />') 

cadenas en Python son inmutables. Puede que necesite volver a crearlo con el operador de asignación.

3

Por alguna razón, el uso de python3 que tenía que escapar de la "\" - signo

somestring.replace('\\n', '') 

Espero que esto ayude a alguien más!

1

Para manejar muchos delimitadores de nueva línea, incluyendo combinaciones de caracteres como \r\n, utilice splitlines (ver this related post) usa la siguiente:

'<br />'.join(thatLine.splitlines()) 
Cuestiones relacionadas