【问题标题】:Replace \n with <br />将 \n 替换为 <br />
【发布时间】:2011-05-21 03:05:19
【问题描述】:

我正在使用 Python 解析文件中的文本。我必须用
替换所有换行符 (\n),因为此文本将构建 html 内容。例如,这是文件中的一些行:

'title\n'

现在我做:

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

我仍然看到后面有换行符的文本。

【问题讨论】:

标签: python string replace newline


【解决方案1】:

thatLine = thatLine.replace('\n', '&lt;br /&gt;')

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

【讨论】:

  • 欢迎来到 StackOverflow。
【解决方案2】:

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

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

&lt;br /&gt;替换字符串中的所有换行符。

【讨论】:

  • 感谢您接受这一点,但请接受@Falmarri 的回答。它更像 Pythonic。这在这里更像是一种有趣的倒退方式。不太推荐...
  • 不知道@Falmarri 的回答是“更 Pythonic”,但它更高效,可能更快。
  • @martineau:我的意思是“应该有一种——最好只有一种——明显的方法。”。而且我很确定我的不是那个。
【解决方案3】:

由于某种原因使用 python3 我不得不转义“\”-sign

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

希望这对其他人有帮助!

【讨论】:

  • 会给+2。 5 星!
  • 如果在 \n 周围使用双引号,则不必转义它。
【解决方案4】:

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

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

【讨论】:

    【解决方案5】:
    thatLine = thatLine.replace('\n', '<br />')
    

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

    【讨论】:

      【解决方案6】:

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

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

      【讨论】:

        【解决方案7】:

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

        示例:

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

        print(thatLine) #python3

        print thatLine #python2.

        【讨论】:

          【解决方案8】:

          我知道这是一个旧线程,但我尝试了建议的答案,不幸的是,简单地用 &lt;br /&gt; 替换换行符并没有做我需要的事情。它只是将它们按字面意思呈现为文本。

          一种解决方案是像这样禁用自动转义:{% autoescape false %}{{ mystring }}{% endautoescape %},这可以正常工作,但如果您有用户提供的内容,那就不好了。所以这对我来说也不是一个解决方案。

          所以这就是我使用的:

          在 Python 中:

          newvar = mystring.split('\n')
          

          然后,将newvar 传递到我的 Jinja 模板中:

          {% for line in newvar %}
              <br />{{ line }}
          {% endfor %}
          

          【讨论】:

            猜你喜欢
            • 2012-05-14
            • 1970-01-01
            • 1970-01-01
            • 2011-07-01
            • 2017-12-22
            • 1970-01-01
            • 1970-01-01
            • 2014-04-08
            • 1970-01-01
            相关资源
            最近更新 更多