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

时间:2017-01-11 18:01:20

标签: python python-3.x unicode

我有一长串使用'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声明中崩溃。

1 个答案:

答案 0 :(得分:10)

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

例如:

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

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

In [10]: chr(int(s[2:], 16))
Out[10]: ''

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

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- ❤'