给定与 unicode 对应的十六进制列表,如何以编程方式检索 unicode 字符?
例如给定列表:
>>> l = ['9359', '935A', '935B']
如何实现这个列表:
>>> u = [u'\u9359', u'\u935A', u'\u935B']
>>> u
['鍙', '鍚', '鍛']
我试过了,但它抛出一个SyntaxError:
>>> u'\u' + l[0]
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape
请您参考如下方法:
\uhhhh 转义仅在字符串文字中有效,您不能使用它们将任意十六进制值转换为字符。换句话说,它们是更大语法的一部分,不能单独使用。
将十六进制值解码为整数并将其传递给 chr() function (或者,在 Python 2 上,unichr() function):
[chr(int(v, 16)) for v in l] #
您可以让Python 将包含文字\uhhhh 文本 的字符串解释为带有unicode_escape codec 的Unicode 字符串文字。 ,但对于单个代码点来说感觉有点矫枉过正:
[(b'\\u' + v.encode('ascii')).decode('unicode_escape') for v in l]
请注意添加的前缀中的双反斜杠,我们必须创建字节字符串才能使其正常工作。
演示:
>>> l = ['9359', '935A', '935B']
>>> [chr(int(v, 16)) for v in l]
['鍙', '鍚', '鍛']
>>> [(b'\\u' + v.encode('ascii')).decode('unicode_escape') for v in l]
['鍙', '鍚', '鍛']
