2024-09-27 01:30:49 发布
网友
在用utf-8编码分析了一些网页后,我意识到我获得了一些我无法操纵的字符,尽管它可以通过打印的方式阅读。在
>> print data A Deuce >> data u'\uff21\u3000\uff24\uff45\uff55\uff43\uff45'
如何使用Python编写一个合适的代码? 我想得到
(我的意思是能够将变量中的文本转换为“常规”字符串) 我看到了一些与该主题相关的解决方案,但没有找到相关的答案(主要基于其他字符集的编码/解码)
在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代码点的字典。在本例中,它将全角拉丁字母(本质上是向上移动到0xFF01-0xFF5E范围的ASCII字符集的一部分)映射到“普通”ASCII字符集。例如,0xFF21(全角A)映射到0x41(ASCII A),0xFF22(全角B)映射到0x42(ASCII B),等等
translate
此功能内置于unicodedata模块中:
>>> unicodedata.normalize('NFKC', 'A Deuce') 'A Deuce'
考虑使用python3,它对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'
在this answer的帮助下:
translate
方法接受一个将一个Unicode代码点映射到另一个Unicode代码点的字典。在本例中,它将全角拉丁字母(本质上是向上移动到0xFF01-0xFF5E范围的ASCII字符集的一部分)映射到“普通”ASCII字符集。例如,0xFF21(全角A)映射到0x41(ASCII A),0xFF22(全角B)映射到0x42(ASCII B),等等此功能内置于unicodedata模块中:
考虑使用python3,它对Unicode字符有更好的打印支持。下面是一个示例:
相关问题 更多 >
编程相关推荐