2012-02-28 132 views
3

我有一個xml文件,我需要將其轉換爲utf8。 不幸的是,實體包含文字是這樣的:Python將html ascii編碼的文本轉換爲utf8

/mytext, 

我使用的編解碼器庫文件轉換爲utf8,但是HTML實體將無法使用它。

有沒有簡單的方法來擺脫html編碼?

感謝

+0

http://stackoverflow.com/questions/37486/filter-out-html-tags-and-resolve-entities-in-python – kechapito 2012-02-28 17:56:16

+0

你可以通過unescape首先傳遞原始文件嗎? – jterrace 2012-02-28 17:56:16

回答

3

你可以把它傳遞給XML解析器之前通過unescape函數傳遞文件的文本。

或者,如果你只是解析HTML,lxml's http parser爲您完成此:

>>> import lxml.html 
>>> html = lxml.html.fromstring("<html><body><p>&#047;mytext&#044;</p></body></html>") 
>>> lxml.html.tostring(html) 
'<html><body><p>/mytext,</p></body></html>' 
1

最近發佈的低於響應類似的問題:

import HTMLParser  # html.parser in Python 3 
h = HTMLParser.HTMLParser() 
h.unescape('&#047;mytext&#044;') 

技術上這種方法是「內部「並且沒有記錄,但是它在API中已經有一段時間了,並且沒有用下劃線標出。

找到它here;還提到了其他方法,其中BeautifulSoup可能是最好的,如果你不介意它的「沉重」。