为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2019-11-13 14:33:05
cgi.escape似乎是一种可能的选择。它运作良好吗?有什么更好的东西吗?
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

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。将其设置为True,cgi.escape还转义双引号字符("),因此您可以在XML / HTML属性中使用结果值。


编辑:请注意,在Python 3.2中不推荐使用cgi.escape,而推荐使用,html.escape除了quote默认值为True 以外,它的功能相同。


查看完整回答
反对 回复 2019-11-13
?
不负相思意

TA贡献1777条经验 获得超10个赞

在Python 3.2中html,引入了一个新模块,该模块用于从HTML标记转义保留字符。


它具有一个功能escape():


>>> import html

>>> html.escape('x > 2 && x < 7')

'x &gt; 2 &amp;&amp; x &lt; 7'


查看完整回答
反对 回复 2019-11-13
?
开满天机

TA贡献1786条经验 获得超13个赞

如果您希望在URL中转义HTML:


这可能不是OP想要的(问题并不能清楚地表明转义是在哪种上下文中使用的),但是Python的本机库urllib具有一种逃避需要安全包含在URL中的HTML实体的方法。


以下是一个示例:


#!/usr/bin/python

from urllib import quote


x = '+<>^&'

print quote(x) # prints '%2B%3C%3E%5E%26'


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 691 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信