2009-10-30 67 views
1

我正在Python中使用一個簡單的搜尋器。目標是創建一個sitemap.xml。 (你可以在這裏找到非常alpha版本:http://code.google.com/p/sitemappy/) 我注意到,如果我生成的XML包含非HTML實體的URL(如&),xml不驗證,它不被Google網站管理員工具接受。 是否有快速的方法來編碼網址的查詢字符串部分?在Python中轉換爲&

謝謝!

利瑪竇

回答

7

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

6

Saxutils對XML實體的避開功能:

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