在python3中将emoji转换为Unicode,反之亦然 [英] Converting emojis to Unicode and vice versa in python 3
本文介绍了在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屋!
查看全文