转换unicode表情符号的字符串

时间:2017-12-14 13:35:50

标签: python unicode

我有一个基本上代表unicode表情符号的字符串列表,例如:

emoji[0] = 'U+270DU+1F3FF'

我想转换这个"几乎" unicode表情符号表示其真正的表情符号表示,以便我可以搜索包含这些表情符号的文本文档,例如:

emoji[0] = emoji[0].replace('U+', '\U000')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-4: truncated \UXXXXXXXX escape

我该如何实现?

2 个答案:

答案 0 :(得分:3)

可以使用可变数字表示的解决方案:

>>> import re
>>> e = 'U+270DU+1F3FF'
>>> def emojize(match):
...     return chr(int(match.group(0)[2:], 16))
>>> re.sub(r"U\+[0-9A-F]+", emojize, e)
'✍'

答案 1 :(得分:2)

这是因为270D中有4位数,1F3FF中有5位数:

>>> e = 'U+270D'
>>> print e.replace('U+', '\U0000').decode('unicode-escape')
✍
>>> e = 'U+1F3FF'
>>> print e.replace('U+', '\U000').decode('unicode-escape')