使用 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))

输出: