在Python中将&转为&

2 投票
2 回答
8551 浏览
提问于 2025-04-15 15:31

我正在用Python做一个简单的爬虫,目的是生成一个sitemap.xml文件。
(你可以在这里找到这个非常初步的版本:http://code.google.com/p/sitemappy/
我发现,如果我生成的xml里面的链接包含一些特殊字符(比如&符号),那么这个xml就无法通过验证,也不能被Google的站长工具接受。
有没有什么简单的方法可以对这些链接中的查询字符串部分进行编码呢?

谢谢!

Matteo

2 个回答

8

Saxutils 提供了一个可以处理 XML 实体的转义函数:

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

这里有一个很实用的工具,叫做 cgi.escape

cgi.escape(s[, quote])

这个函数可以把字符串 s 中的特殊字符 '&'、'<' 和 '>' 转换成在 HTML 中安全使用的格式。如果你需要在网页上显示可能包含这些字符的文本,就可以用这个函数。如果你把可选的参数 quote 设置为真,那么引号字符 ('"') 也会被转换;这在把内容放进 HTML 属性值时特别有用,比如在 ... 中。如果你要处理的内容可能包含单引号或双引号,或者两者都有,建议使用 xml.sax.saxutils 模块里的 quoteattr() 函数。

快速的互动检查:

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

撰写回答