Skip to main content
 首页 » 编程设计

python之如何以编程方式从十六进制中检索 unicode 字符

2025年05月04日14haluo1

给定与 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] 
['鍙', '鍚', '鍛']