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