Python 3 - 在 Python 中如何处理和读取表情符号和 unicode?一个测试

Python 3 - How are the emojis and unicode handled and read in Python? A test

我有一些带有文字和表情符号的句子,我的目标是转换它们描述中的表情符号。

Example: " Hello!" will converted in "smiling_face_with_smiling_eyes Hello!"

其实我对encoding/decoding并不放心,也遇到了一些问题。感谢 post 这里 我想我可能已经找到了解决方案。尽管如此,我还是不明白这是怎么回事,也不知道我为什么要这样做。我会很感激一些解释。

我将向您展示两个测试,第一个是失败的。你能解释一下为什么吗?

# -*- coding: UTF-8 -*
unicode = u"\U0001f600"
string = u"\U0001f600 Hello world"
print("SENT: "+string)

输出:发送:Hello world

测试 1(失败):

if string.find(unicode):
   print("after: "+string.replace(unicode,"grinning_face_with_sweat"))
else:
   print("not found : "+unicode)

输出:未找到:

测试 2:

if string.find(unicode.encode('unicode-escape').decode('ASCII')):
   print(string.replace(unicode,"grinning_face_with_sweat"))
else:
   print("not found : "+unicode)

输出:grinning_face_with_sweat你好世界

由于unicode的文本在string的开头,string.find(unicode)returns0。如果找不到,则returns-1。您的代码应该是:

if string.find(unicode) != -1:
   print("after: "+string.replace(unicode,"grinning_face_with_sweat"))
else:
   print("not found : "+unicode)

顺便说一句,你还在用Python2吗?我强烈建议切换到 Python 3。如果您使用的是 Python 3,则无需在字符串前面加上 u,因为 Python 3 中的所有字符串都是 Unicode .