cgi.escape 似乎是一种可能的选择。它运作良好吗?有什么被认为更好的吗?
最佳答案
html.escape
现在是正确答案,以前是 cgi.escape
在 3.2 之前的 python 中。它逃脱了:
<
至<
>
至>
&
至&
这对于所有 HTML 来说已经足够了。
编辑:如果您有非 ascii 字符,您还想转义,以便包含在另一个使用不同编码的编码文档中,就像 Craig 说的那样,只需使用:
data.encode('ascii', 'xmlcharrefreplace')
别忘了解码 data
至unicode
首先,使用它被编码的任何编码。
但是根据我的经验,如果您只使用 unicode
,那么这种编码是没有用的。从一开始就一直。只需在末尾编码为文档标题中指定的编码(utf-8
以获得最大兼容性)。
例子:
>>> cgi.escape(u'<a>bá</a>').encode('ascii', 'xmlcharrefreplace')
'<a>bá</a>
另外值得注意的是(感谢 Greg)是额外的 quote
参数cgi.escape
需要。将其设置为 True
, cgi.escape
还转义双引号字符 ("
),以便您可以在 XML/HTML 属性中使用结果值。
编辑:请注意,cgi.escape 在 Python 3.2 中已被弃用,取而代之的是 html.escape
, 除了 quote
默认为 True。
https://stackoverflow.com/questions/1061697/
相关文章:
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)?