使用 python 表情符号包时表情符号未正确显示
Emojis not showing up properly using python emoji package
我编写了一个从给定数据集中提取所有表情符号的脚本:
for message in df['Message']:
for char in message:
if char in emoji.UNICODE_EMOJI:
print(char)
它有点管用,可以正确识别哪些字符是表情符号。然而,输出没有正确解析一些表情符号,它们只是显示为棕色方块:
为什么会这样?有什么办法可以解决这个问题吗?大多数表情符号都可以正常显示,但也有一些不能。
编辑:
再看了一下,好像是棕色的方块带有特定的表情符号来表示使用的色调。
但是,某些表情符号仍然存在一些问题。例如,通常的心形表情符号确实显示为心形字符,但不是表情符号样式。屏幕截图,因为将其粘贴到此处最终会正确显示它:
问题是深色肤色(和一般的颜色变体)被编码为两个独立的符号,而不是一个,即
</code> 由两个符号 <code>
产生(第二个给出颜色)。
从这个例子可以看出:
df = pd.DataFrame({"Message": ["test "]})
for message in df['Message']:
for char in message:
if char in emoji.UNICODE_EMOJI:
print(char)
因此您将不得不使用正则表达式 ():
import regex
df = pd.DataFrame({"Message": ["test ", "test 2 "]})
def split_count(text):
emoji_list = []
data = regex.findall(r'\X', text)
for word in data:
if any(char in emoji.UNICODE_EMOJI for char in word):
emoji_list.append(word)
return emoji_list
for message in df['Message']:
counter = split_count(message)
print(' '.join(emoji for emoji in counter))
输出:
我编写了一个从给定数据集中提取所有表情符号的脚本:
for message in df['Message']:
for char in message:
if char in emoji.UNICODE_EMOJI:
print(char)
它有点管用,可以正确识别哪些字符是表情符号。然而,输出没有正确解析一些表情符号,它们只是显示为棕色方块:
为什么会这样?有什么办法可以解决这个问题吗?大多数表情符号都可以正常显示,但也有一些不能。
编辑: 再看了一下,好像是棕色的方块带有特定的表情符号来表示使用的色调。
但是,某些表情符号仍然存在一些问题。例如,通常的心形表情符号确实显示为心形字符,但不是表情符号样式。屏幕截图,因为将其粘贴到此处最终会正确显示它:
问题是深色肤色(和一般的颜色变体)被编码为两个独立的符号,而不是一个,即
</code> 由两个符号 <code>
产生(第二个给出颜色)。
从这个例子可以看出:
df = pd.DataFrame({"Message": ["test "]})
for message in df['Message']:
for char in message:
if char in emoji.UNICODE_EMOJI:
print(char)
因此您将不得不使用正则表达式 (
import regex
df = pd.DataFrame({"Message": ["test ", "test 2 "]})
def split_count(text):
emoji_list = []
data = regex.findall(r'\X', text)
for word in data:
if any(char in emoji.UNICODE_EMOJI for char in word):
emoji_list.append(word)
return emoji_list
for message in df['Message']:
counter = split_count(message)
print(' '.join(emoji for emoji in counter))
输出: