在Python中转换为&

问题描述:

我正在Python中使用一个简单的搜寻器。目标是创建一个sitemap.xml。 (你可以在这里找到非常alpha版本:http://code.google.com/p/sitemappy/) 我注意到,如果我生成的XML包含非HTML实体的URL(如&),xml不验证,它不被Google网站管理员工具接受。 是否有快速的方法来编码网址的查询字符串部分?在Python中转换为&

谢谢!

利玛窦

cgi.escape救援:

cgi.escape(s[, quote])

转换的字符字符串s '&', '<' 和 '>' 到HTML安全序列。如果您需要显示可能包含HTML中的此类字符的文本,请使用此选项。如果可选标志引用为真,则引号标记字符('“')也会被翻译;这有助于包含在HTML属性值中,如英寸。如果要引用的值可能包含单引号或双引号字符,或两者兼而有之,考虑xml.sax.saxutils模块中使用quoteattr()函数,而不是

快速交互检查:

>>> import cgi 
>>> cgi.escape('<&>') 
'&lt;&amp;&gt;' 
>>> 
+0

您不能一行一行地通过这个函数运行一个XML文件。它已被弃用,并由html.escape(s,quote = True)取代,但仍无法选择性地跳过&符号。问题是该函数也会转义XML标记尖括号,这会触发ParseErrors。你最好逐行解析并创建一个新文件或者编辑文件line.replace(“&”,“&”) – aJetHorn 2018-01-22 18:49:08

Saxutils对XML实体的避开功能:

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