我正在使用Readability Parser API从网页中提取内容。网页是拉丁字符集时没关系,但是当我用西里尔文提取文章时,它最终得到以下内容:
<div>Ввоскресень</div>...etc
这里有趣的是,网页的标题是在西里尔文中正确提取的,而不是内容。我的尝试是按照SO answer中的建议执行以下操作:
content = unicodedata.normalize('NFKD', content).encode('ascii','ignore')
但它不起作用。你能告诉我在保存到数据库之前是否有办法转换这个字符串?
如果我的问题标题正确解释了我的需要,请告诉我。谢谢。
答案 0 :(得分:2)
单向(Python 3.3):
>>> s='<div>Ввоскресень</div>'
>>> import html.parser
>>> h=html.parser.HTMLParser()
>>> h.unescape(s)
'<div>Ввоскресень</div>'
Python 2.7:
>>> s='<div>Ввоскресень</div>'
>>> import HTMLParser
>>> h=HTMLParser.HTMLParser()
>>> print(h.unescape(s))
<div>Ввоскресень</div>
P.S。我去寻找文档链接,看起来unescape
没有记录。这是一种不使用未记录的API的方法:
>>> re.sub(r'&#x(.*?);',lambda x: chr(int(x.group(1),16)),s)
'<div>Ввоскресень</div>'
根据评论,它最终在Python 3.4中记录(并移动):