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

最佳答案

cgi.escape 很好。它逃脱了:

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

  • 对于所有HTML而言,这就足够了。

    编辑:如果您有非ASCII字符,您还想转义,以便包含在使用不同编码的另一个编码文档中,如Craig所说,只需使用:
    data.encode('ascii', 'xmlcharrefreplace')
    

    别忘了先使用编码后的编码将data解码为unicode

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

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

    同样值得一提的(感谢Greg)是quote需要的额外cgi.escape参数。将其设置为Truecgi.escape也会转义双引号字符("),因此您可以在XML/HTML属性中使用结果值。

    编辑:请注意,cgi.escape已在Python 3.2中弃用,转而支持 html.escape ,除了quote默认为True以外,该功能相同。

    关于python - 在Python中转义HTML的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1061697/

    10-10 22:52