在使用utf-8编码解析一些网页后,我意识到我获得了无法操作的字符,尽管它可以通过打印方式读取。
>> print data
A Deuce
>> data
u'\uff21\u3000\uff24\uff45\uff55\uff43\uff45'
如何使用Python将其转换为合适的编码? 我想获得
>> my_variable
'A Deuce'
(我的意思是能够将变量中的文本转换为“常规”字符串) 我看到了几个与该主题相关的解决方案但未找到相关答案(主要基于其他字符集中的编码/解码)
答案 0 :(得分:2)
在this answer的帮助下:
>>> table = dict([(x + 0xFF00 - 0x20, unichr(x)) for x in xrange(0x21, 0x7F)] + [(0x3000, unichr(0x20))])
>>> data.translate(table)
u'A Deuce'
translate
方法采用将一个Unicode代码点映射到另一个Unicode代码点的字典。在这种情况下,它将全角度拉丁字母(实际上是ASCII字符集的一部分向上移动到范围0xFF01-0xFF5E)映射到“普通”ASCII字符集。例如,0xFF21(全宽A)映射到0x41(ASCII A),0xFF22(全宽B)映射到0x42(ASCII B)等。
答案 1 :(得分:2)
此功能内置于unicodedata模块:
>>> unicodedata.normalize('NFKC', 'A Deuce')
'A Deuce'
答案 2 :(得分:0)
考虑使用Python 3,它对Unicode字符有更好的打印支持。这是一个示例:
>>> s=u'\uff21\u3000\uff24\uff45\uff55\uff43\uff45'
>>> print(s)
A Deuce
>>> s
'A\u3000Deuce'
>>> import unicodedata as ud
>>> ud.name('\u3000')
'IDEOGRAPHIC SPACE'
>>> print(ascii(s))
'\uff21\u3000\uff24\uff45\uff55\uff43\uff45'