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 .
我有一些带有文字和表情符号的句子,我的目标是转换它们描述中的表情符号。
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 .