用\替换\ n

时间:2010-12-06 17:26:52

标签: python string replace newline

我用Python解析文件中的文本。我必须替换所有换行符(\ n),因为这个文本将构建html-content。例如,以下是文件中的一行:

'title\n'

现在我做了:

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

我仍然看到带有换行符的文字。

8 个答案:

答案 0 :(得分:141)

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

str.replace()返回字符串的副本,它不会修改您传入的字符串。

答案 1 :(得分:49)

只是为了踢,你也可以做

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

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

答案 2 :(得分:8)

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

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

答案 3 :(得分:6)

出于某些原因使用python3我不得不逃避&#34; \&#34; -sign

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

希望这有助于其他人!

答案 4 :(得分:6)

要处理许多换行符分隔符,包括\r\n等字符组合,请使用splitlines(请参阅this related post)使用以下内容:

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

答案 5 :(得分:4)

如果字符串中包含<>&字符等,您也可能遇到问题。将其传递给cgi.escape()以处理这些问题。

http://docs.python.org/library/cgi.html?highlight=cgi#cgi.escape

答案 6 :(得分:1)

问题是,当您在'\n'调用中表示replace()时,'\n'被视为由String length=4组成的' \ n '
要摆脱这种情况,请使用ascii表示法。 http://www.asciitable.com/

示例:

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

print(thatLine) #python3

print thatLine #python2

答案 7 :(得分:0)

我知道这是一个旧线程,但是我尝试了建议的答案,但是不幸的是,简单地将换行符替换为SELECT id, lookupName FROM analyticsReports where id > 99999并没有达到我的要求。它只是将它们从字面上呈现为文本。

一种解决方案是禁用这样的自动转义:<br />,这种方法可以正常工作,但是如果您具有用户提供的内容,那么这样做就不好了。所以这也不是我的解决方案。

这就是我所使用的:

在Python中:

{% autoescape false %}{{ mystring }}{% endautoescape %}

然后,将newvar = mystring.split('\n') 传递到我的Jinja模板中:

newvar