簡體   English   中英

Python-將Unicode十六進制轉換為字符串

[英]Python - Convert unicode hex to string

我正在使用Readability Parser API從網頁中提取內容。 網頁使用拉丁字符集是可以的,但是當我用西里爾文提取文章時,其結果如下:

<div>&#x412;&#x432;&#x43E;&#x441;&#x43A;&#x440;&#x435;&#x441;&#x435;&#x43D;&#x44C;</div>...etc

有趣的是,網頁的標題是用西里爾字母正確提取的,而不是內容。 我的嘗試是按照此答案中的建議執行以下操作:

content = unicodedata.normalize('NFKD', content).encode('ascii','ignore')

但它沒有用。 您能否告訴我在保存到數據庫之前是否可以轉換此字符串?

請讓我知道問題標題是否正確解釋了我的需求。 謝謝。

一種方式(Python 3.3):

>>> s='<div>&#x412;&#x432;&#x43E;&#x441;&#x43A;&#x440;&#x435;&#x441;&#x435;&#x43D;&#x44C;</div>'
>>> import html.parser
>>> h=html.parser.HTMLParser()
>>> h.unescape(s)
'<div>Ввоскресень</div>'

Python 2.7:

>>> s='<div>&#x412;&#x432;&#x43E;&#x441;&#x43A;&#x440;&#x435;&#x441;&#x435;&#x43D;&#x44C;</div>'
>>> import HTMLParser
>>> h=HTMLParser.HTMLParser()
>>> print(h.unescape(s))
<div>Ввоскресень</div>

PS我去尋找文檔鏈接,而且好像沒有unescape文檔。 這是一種不使用未記錄的API的方法:

>>> re.sub(r'&#x(.*?);',lambda x: chr(int(x.group(1),16)),s)
'<div>Ввоскресень</div>'

根據注釋,它最終似乎已在Python 3.4中記錄(並移走):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM