从U + unicode字符串定义转换为真正的unicode字符

Bol*_*ter 1 python unicode python-3.x

我有一长串使用'U+1F49A'编码约定的unicode定义和描述映射.

在python(3)中,我如何以真正的unicode字符读取它们?(即'\u00001F49A'或'''

我已经尝试过数组切片和组合,'\U000{}'.format('1F49A')但最终会SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-4: truncated \UXXXXXXXX escape因为初始字符串实例化在部分unicode声明中出现问题.

Rob*_*obᵩ 10

您还可以使用int()解析数字,chr()并将数字转换为单字符字符串.

例如:

In [8]: chr(0x1f49a)
Out[8]: ''

In [9]: s='U+1F49A'

In [10]: chr(int(s[2:], 16))
Out[10]: ''
Run Code Online (Sandbox Code Playgroud)

如果要转换U+xxxx较大字符串中的所有实例,可以在第二个arg中使用相同的chr()/ int()pattern re.sub():

In [14]: s = 'U+1F49A -vs- U+2764'

In [15]: re.sub(r'U\+([0-9a-fA-F]+)', lambda m: chr(int(m.group(1),16)), s)
Out[15]: ' -vs- ?'
Run Code Online (Sandbox Code Playgroud)

  • @mmorin - 不,Jupyter不是必需的,但Python3是.这些命令至少在Ubuntu的Python3中运行良好. (2认同)