python - 在 Python 中转义 HTML 的最简单方法是什么?

cgi.escape 似乎是一种可能的选择。它运作良好吗?有什么被认为更好的吗?

最佳答案

html.escape 现在是正确答案,以前是 cgi.escape 在 3.2 之前的 python 中。它逃脱了:

  • <&lt;
  • >&gt;
  • &&amp;

这对于所有 HTML 来说已经足够了。

编辑:如果您有非 ascii 字符,您还想转义,以便包含在另一个使用不同编码的编码文档中,就像 Craig 说的那样,只需使用:

data.encode('ascii', 'xmlcharrefreplace')

别忘了解码 dataunicode首先,使用它被编码的任何编码。

但是根据我的经验,如果您只使用 unicode,那么这种编码是没有用的。从一开始就一直。只需在末尾编码为文档标题中指定的编码(utf-8 以获得最大兼容性)。

例子:

>>> cgi.escape(u'<a>bá</a>').encode('ascii', 'xmlcharrefreplace')
'&lt;a&gt;b&#225;&lt;/a&gt;

另外值得注意的是(感谢 Greg)是额外的 quote 参数cgi.escape需要。将其设置为 True , cgi.escape还转义双引号字符 ("),以便您可以在 XML/HTML 属性中使用结果值。

编辑:请注意,cgi.escape 在 Python 3.2 中已被弃用,取而代之的是 html.escape , 除了 quote 默认为 True。

https://stackoverflow.com/questions/1061697/

相关文章:

linux - 如何查找几分钟前访问/创建的文件

c++ - Netbeans 7.2 显示 "Unable to resolve identifie

python - Python 3.3+ 中的包不需要 __init__.py

python - 在 Python 中拆分空字符串时,为什么 split() 返回一个空列表,而 s

linux - Git 状态忽略行尾/相同文件/windows & linux 环境/dropbox

python - 关于如何在 python 中使用属性功能的真实示例?

linux - 有没有办法检查是否有指向目录的符号链接(symbolic link)?

javascript - 可以使用 scrapy 从使用 AJAX 的网站中抓取动态内容吗?

python - 为什么 ~True 结果是-2?

python - SQLAlchemy:打印实际查询