表情符号的Python unicode字符转换

时间:2017-01-12 03:50:10

标签: python string unicode formatting emoji

我在将字节有序标记格式化为unicode时遇到了一些问题。我的角色表达方式有些奇怪。基本上它不是在Python中打印表情符号字符,而只是字符串。这是我的例子。

# these codes are coming from a json file; this a representation of one of the codes.
e = 'U+1F600' # smile grin emoji

# not sure how to clean this, so here's a basic attempt using regex.
b = re.compile(r'U\+', re.DOTALL).sub('\U000', e)

print unicode(b) # output should be '\U0001F600'

无论出于何种原因,这都不会打印出表情符号字符。

但是,如果您输入与文字相同的字符串,则使用u标记一切都按预期工作。

print u'\U0001F600'

我在这里做错了什么?我认为unicode函数会将我的字符串转换为工作等效字符,但显然不是。

我正在使用Python 2.7

1 个答案:

答案 0 :(得分:11)

我猜decode正是您要找的,

>>> b = '\U0001F600'
>>> print b.decode('unicode-escape')

>>> print unicode(b, 'unicode-escape')

的问题
print unicode(b)

unicode函数尝试将字符串\U0001F600转换为unicode,从而导致\\U0001F600。为防止这种情况,我们将当前编码提供为unicode-escape