2

在用 utf-8 编码解析了一些网页后,我意识到我获得了我无法操作的字符,尽管它可以通过打印的方式读取。

>> print data
A Deuce

>> data
u'\uff21\u3000\uff24\uff45\uff55\uff43\uff45'

我怎样才能用 Python 把它变成一个体面的编码?我想获得

>> my_variable
'A Deuce'

(我的意思是能够将变量中的文本转换为“常规”字符串)我看到了几个与该主题相关的解决方案,但没有找到相关答案(主要基于其他字符集中的编码/解码)

4

3 回答 3

3

此功能内置于unicodedata模块中:

>>> unicodedata.normalize('NFKC', 'A Deuce')
'A Deuce'
于 2013-05-19T15:13:32.930 回答
2

这个答案的帮助下:

>>> table = dict([(x + 0xFF00 - 0x20, unichr(x)) for x in xrange(0x21, 0x7F)] + [(0x3000, unichr(0x20))])
>>> data.translate(table)
u'A Deuce'

translate方法采用将一个 Unicode 代码点映射到另一个的字典。在这种情况下,它将全角拉丁字母(本质上是向上移动到范围 0xFF01-0xFF5E 的 ASCII 字符集的一部分)映射到“正常”ASCII 字符集。例如,0xFF21(全角 A)映射到 0x41(ASCII A),0xFF22(全角 B)映射到 0x42(ASCII B)等。

于 2013-05-17T00:35:44.343 回答
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'
于 2013-05-19T14:53:10.243 回答