在python3中将emoji转换为Unicode,反之亦然 [英] Converting emojis to Unicode and vice versa in python 3

查看:17
本文介绍了在python3中将emoji转换为Unicode,反之亦然的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将一个emoji表情转换成它在python3中的unicode。例如,我会有一个emoji😀,并想从中得到相应的unicode‘U+1F600’。同样,我想把‘U+1F600’转换回😀。现在我已经阅读了文档,并尝试了几种选择,但蟒蛇的行为让我在这里感到困惑。

>>> x = '😀'
>>> y = x.encode('utf-8')
>>> y
b'xf0x9fx98x80'

表情符号将转换为字节对象。

>>> z = y.decode('utf-8')
>>> z
'😀'

将Byte对象转换回表情符号,到目前为止一切正常。

现在,接受表情符号的Unicode:

>>> c = 'U0001F600'
>>> d = c.encode('utf-8')
>>> d
>>> b'xf0x9fx98x80'

这将再次打印字节编码。

>>> d.decode('utf-8')
>>> '😀'

这会再次打印出表情符号。我真的想不出如何在Unicode和emoji之间进行转换。

推荐答案

"😀"已是unicode对象。UTF-8不是Unicode,它是Unicode的字节编码。要获取Unicode字符的代码点编号,可以使用ord函数。要以您想要的形式打印它,您可以将其格式化为十六进制。如下所示:

s = '😀'
print('U+{:X}'.format(ord(s)))

输出

U+1F600

如果您使用的是Python3.6+,则可以使用f字符串使其更短(更高效):

s = '😀'
print(f'U+{ord(s):X}')
顺便说一句,如果您想创建像'U0001F600'这样的Unicode转义序列,可以使用'unicode-escape'编解码器。但是,它返回一个bytes字符串,您可能希望将其转换回文本。您可以使用‘UTF-8’编解码器,但您也可以只使用‘ASCII’编解码器,因为它保证只包含有效的ASCII。

s = '😀'
print(s.encode('unicode-escape'))
print(s.encode('unicode-escape').decode('ASCII'))

输出

b'\U0001f600'
U0001f600

我建议您看看Stack Overflow联合创始人Joel SpolskyThe Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)的这篇短文。

这篇关于在python3中将emoji转换为Unicode,反之亦然的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆