我用Python解析文件中的文本。我必须替换所有换行符(\ n),因为这个文本将构建html-content。例如,以下是文件中的一行:
'title\n'
现在我做了:
thatLine.replace('\n', '<br />')
print thatLine
我仍然看到带有换行符的文字。
答案 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