首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python emoji包时,emoji不能正常显示

使用python emoji包时,emoji不能正常显示
EN

Stack Overflow用户
提问于 2020-10-04 18:43:45
回答 1查看 546关注 0票数 1

我写了一个脚本,从给定的数据集中提取所有表情符号:

代码语言:javascript
复制
for message in df['Message']:
     for char in message:
         if char in emoji.UNICODE_EMOJI:
              print(char)

它在某种程度上是有效的,并正确地识别哪些字符是表情符号。然而,输出不能正确解析一些表情符号,它们只是显示为棕色正方形:

?

为什么会发生这种情况?有什么办法可以解决这个问题吗?大多数表情符号都能很好地显示出来,但也有少数表情符号不会出现。

编辑:再看一遍之后,看起来棕色的方块有一些特定的表情符号来说明所使用的色调。

然而,某些表情符号仍然存在一些问题。例如,通常的心形表情确实会显示为心形字符,但不是以表情符号的样式显示。截图,因为粘贴到这里会正确地显示出来:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-04 19:15:56

问题是,深肤色(以及一般的颜色变体)被编码为两个单独的符号,而不是一个,即两个符号? ? (第二个给出颜色)的??结果。

您可以从下面的示例中看到:

代码语言:javascript
复制
df = pd.DataFrame({"Message": ["test ?? "]})
for message in df['Message']:
    for char in message:
        if char in emoji.UNICODE_EMOJI:
            print(char)
?
?

因此,您必须使用正则表达式(as per this answer):

代码语言:javascript
复制
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))

输出:

代码语言:javascript
复制
??
? ?
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64193637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档