cgi.escape很好 它逃脱了:
< 至 <
> 至 >
& 至 &
对于所有HTML而言,这就足够了。
编辑:如果您有非ASCII字符,您还想转义,以便包含在使用不同编码的另一个编码文档中,如Craig所说,只需使用:
data.encode('ascii', 'xmlcharrefreplace')
不要忘了解码data到unicode第一,使用任何编码它编码的。
但是根据我的经验,如果您unicode从头开始一直都在工作,那么这种编码是没有用的。只需在文档头中指定的编码末尾进行编码(utf-8以实现最大兼容性)。
例:
>>> cgi.escape(u'bá').encode('ascii', 'xmlcharrefreplace')
'<a>bá</a>
另外值得一提的(感谢Greg)是额外的quote参数cgi.escape。将其设置为True,cgi.escape还转义双引号字符("),因此您可以在XML / HTML属性中使用结果值。
编辑:请注意,在Python 3.2中不推荐使用cgi.escape,而推荐使用,html.escape除了quote默认值为True 以外,它的功能相同。