猿问

在 Python 中将十六进制 NCR 文本表示转换为 Unicode

我有一个从中文网页解析出来的字符串:


若き葉末には風が立ち 森は翡翠の息を返す 雲の切れ間から注ぐ 光に君を見初めん


碧き瞳のほほえむとき そは鐘のひびき胸に打つ さしのべた腕に絡む 蔦の葉に君を逃す


残る 香り 水面をかけゆく恋の舟 つかの間の波に 揺られ


やさしき幻影 心に映るその姿よ 永遠なる君に 想いを捧げん


若き葉末には風は眠り 森は密やかに息を止む 抱きしめた腕のなかで 静かに君は消えゆく


月は 満ちて 黄金の羽根が舞いおちる 我はただひとり森に


祈りたまえや


我想将此字符串转换为其适当的 unicode 格式。


从我的研究中,我已经能够收集到例如一映射到 unicode string b'\\u4e00'。


这可以通过在字符串的开头剥离&#x和添加前缀 a\\u以及将整个内容小写并通过b在字符串前添加 a 转换为字节串来手动完成。这是在这个repo 中完成的,但是通过代码使用低效的 eval 函数,例如eval("b'\\u4e00").


[编辑:上面的段落是不正确的。它不是字节串,而是 python2 中存在的 unicode 字符串。正确的映射是一-> u'\u4e00']

有一个更好的方法吗?


Helenr
浏览 342回答 1
1回答

慕村225694

看看html标准库中的模块:>>> import html>>> html.unescape('Je me levais tôt')'Je me levais tôt'>>> html.unescape('若き葉末には')'若き葉末には'结果是一个 Unicode 字符串(str在 Python 3 中输入)。请注意,该b'...'符号用于字节字符串。b'\\u4e00'您示例中的文字没有多大意义,因为它是一个包含 6 个字符(\、u、4、e、0、0)的字节字符串。您可能指的是'\u4e00'(或u'\u4e00'在 Python 2 中),它是一个单字符 Unicode 字符串。
随时随地看视频慕课网APP

相关分类

Python
我要回答