3 回答

TA貢獻1784條經驗 獲得超7個贊
cgi.escape很好 它逃脫了:
< 至 <
> 至 >
& 至 &
對于所有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屬性中使用結果值。
編輯:請注意,在Python 3.2中不推薦使用cgi.escape,而推薦使用,html.escape除了quote默認值為True 以外,它的功能相同。

TA貢獻1777條經驗 獲得超10個贊
在Python 3.2中html,引入了一個新模塊,該模塊用于從HTML標記轉義保留字符。
它具有一個功能escape():
>>> import html
>>> html.escape('x > 2 && x < 7')
'x > 2 && x < 7'

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'
添加回答
舉報