2010-12-06 49 views
26

Je suis en train d'analyser du texte à partir d'un fichier avec Python. Je dois remplacer toutes les nouvelles lignes (\ n) avec
parce que ce texte construira le contenu html. Par exemple, voici quelques ligne du fichier:Remplacer n par <br />

'title\n' 

Maintenant je fais:

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

Et je vois encore le texte avec saut de ligne après.

+2

Tenir compte une seule solution CSS: http://stackoverflow.com/a/7602751/ 74449 pour réduire le potentiel pour XSS – Myster

Répondre

35

Juste pour voir, vous pouvez aussi faire

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

pour remplacer tous les sauts de ligne dans une chaîne avec <br />.

+16

Merci d'avoir accepté, mais acceptez plutôt la réponse de @ Falmarri. C'est beaucoup plus pythonique. C'est ici une façon amusante et rétrograde de le faire. Pas vraiment recommandé ... –

+1

Ne sait pas que la réponse de @ Falmarri est "plus Pythonic", mais c'est plus efficace et probablement plus rapide. – martineau

+3

@martineau: Je voulais dire ceci dans le sens de "Il devrait y avoir une - et de préférence une seule - façon évidente de le faire.". Et je suis presque sûr que le mien n'est pas celui-là. –

113

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

str.replace() retourne une copie de la chaîne, il ne modifie pas la chaîne que vous passez.

+4

Cette réponse semble meilleure que celle acceptée. – SparkAndShine

+0

Bienvenue dans StackOverflow. –

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

les chaînes en Python sont immuables. Vous devrez peut-être le recréer avec l'opérateur d'affectation.

3

Pour une raison quelconque en utilisant python3 je devais échapper à la "\" - signe

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

Hope this helps quelqu'un d'autre!

1

Pour gérer plusieurs délimiteurs, y compris newline combinaisons de caractères comme \r\n, utilisez splitlines (voir this related post) utiliser les éléments suivants:

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