转换&;至&;amp;用Python

转换&;至&;amp;用Python,python,xml,sitemap,urlencode,Python,Xml,Sitemap,Urlencode,我正在用Python开发一个简单的爬虫程序。目的是创建一个sitemap.xml。 (您可以在此处找到最高级的版本:) 我注意到,如果我使用包含非HTML实体(如&)的URL生成xml,xml将无法验证,而且Google网站管理员工具也不会接受它。 有没有一种对URL的查询字符串部分进行编码的快速方法 谢谢大家! 马特奥向救援人员致意: cgi.escape(s[,quote]) 将字符串s中的字符“&”和“”转换为HTML安全序列。如果需要在HTML中显示可能包含此类字符的文本,请使用此选项。

我正在用Python开发一个简单的爬虫程序。目的是创建一个sitemap.xml。 (您可以在此处找到最高级的版本:) 我注意到,如果我使用包含非HTML实体(如&)的URL生成xml,xml将无法验证,而且Google网站管理员工具也不会接受它。 有没有一种对URL的查询字符串部分进行编码的快速方法

谢谢大家!

马特奥

向救援人员致意:

cgi.escape(s[,quote])

将字符串s中的字符“&”和“”转换为HTML安全序列。如果需要在HTML中显示可能包含此类字符的文本,请使用此选项。如果可选标记引用为真,则引号字符(“′”)也被翻译;这有助于包含在HTML属性值中,如在引用中。如果引用的值可能包括单引号或双引号字符,或者两者都在XML.SAX.SAXUTILS模块中使用QuoTeTrad()函数。 快速交互检查:

>>> import cgi
>>> cgi.escape('<&>')
'&lt;&amp;&gt;'
>>> 
导入cgi >>>cgi.escape(“”) ‘及’ >>> 具有XML实体的转义函数:

>>> from xml.sax import saxutils
>>> saxutils.escape("&")
'&amp;'

您不能通过此函数逐行运行XML文件。它已被弃用并替换为html.escape(s,quote=True),但仍然无法有选择地转义符号。问题是,该函数还将转义XML标记尖括号,这将触发解析错误。您最好逐行解析并创建新文件或在位编辑文件。替换(“&”,“&;”)