我有一长串使用 '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
实例转换成一个更大的字符串,你可以使用相同的chr()
/int()
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- ❤'
关于python - 从 U+ unicode 字符串定义转换为真正的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41597657/