我有一长串使用'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声明中出现问题.
您还可以使用int()
解析数字,chr()
并将数字转换为单字符字符串.
例如:
In [8]: chr(0x1f49a) Out[8]: '' In [9]: s='U+1F49A' In [10]: chr(int(s[2:], 16)) Out[10]: ''
如果要转换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- ?'