2012-02-28 109 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可能是最好的,如果你不介意它的“沉重”。