将 \n 替换为 <br />

58

我正在使用Python从文件中解析文本。 我需要将所有换行符替换为<br />。 我尝试了以下代码:

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

但是我仍然看到了带有换行符的文本。为什么?


4
考虑一种纯CSS的解决方案:https://dev59.com/J2855IYBdhLWcg3wpmLw#7602751,以减少潜在的XSS风险。 - Myster
10个回答

189

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

这行代码是将文本字符串中的换行符替换为HTML换行标签,并将结果保存在变量thatLine中。需要注意的是,str.replace()方法返回原始字符串的副本,而不会修改您传递的字符串。


3
欢迎来到StackOverflow。 - Cecil Curry

71

只是为了好玩,你也可以这样做

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

将字符串中的所有换行符替换为<br />


25
谢谢您接受这个回答,但请接受@Falmarri的答案。它更符合Python的风格。这里的方法有些滑稽和反常规,不是很推荐使用... - Tim Pietzcker
1
不知道@Falmarri的答案是否“更Pythonic”,但它更高效,可能更快。 - martineau
4
@martineau: 我的意思是“做一件事应该有一个——最好只有一个——显而易见的方法。”而我相当确定我的方法不是这个。 - Tim Pietzcker
这是唯一一个对我的示例起作用的方法,我尝试了几个!谢谢! - Eric Swiggum

23

由于某种原因,我在使用Python3时不得不转义"\ "符号。

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

希望这能帮助到其他人!


2
会给予2.5颗星! - JJFord3
如果您在 \n 周围使用双引号,就不必转义它。 - Jordan
即使使用双引号,您可能仍然需要对其进行转义。 - Bendemann

12

为了处理包括字符组合如 \r\n 在内的多个换行符分隔符,使用 splitlines (参见 这篇相关文章)使用以下代码:

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

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

Python中的字符串是不可变的。你可能需要使用赋值运算符重新创建它。


4

3
问题在于当你在replace()函数中使用'\n'时,'\n'被视为一个由' \ n'组成、长度为4的字符串。
为了解决这个问题,可以使用ASCII码表示法。 http://www.asciitable.com/

例如:

newLine = chr(10)
thatLine=thatLine.replace(newLine , '<br />')

打印(thatLine) #Python3

print thatLine #Python2 .


1
我知道这是一个旧线程,但我尝试了建议的答案,不幸的是,仅仅用<br />替换换行符并没有达到我所需的效果。它只是将它们作为文本文字逐字呈现。
其中一种解决方案是像这样禁用自动转义:{% autoescape false %}{{ mystring }}{% endautoescape %},这很好用,但如果你有用户提供的内容,那就不行了。所以这对我也不是一个解决方案。
所以这就是我用的方法:
在Python中:
newvar = mystring.split('\n')

然后,将newvar传递到我的Jinja模板中:
{% for line in newvar %}
    <br />{{ line }}
{% endfor %}

0

如果你想把字符串中的/n替换成</br>,我猜测你是想在HTML视图中解析换行符。

word-break: break-all,
white-space: pre-wrap;

将这些样式添加到文本的父级div/container中,可以解决您的问题,而无需进行任何字符串操作。

0
如果你想使用 replace 来实现这个功能,但是
并没有起到作用(我的情况就是这样),你可以尝试使用以下方法:
text_to_split = r'Hello\n\n I am a test.'
split_text = text_to_split.replace('\\n', '\n')

首先需要对示例文本中的反斜杠进行转义,然后在替换文本中不进行转义,这样就可以生成一个新行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接