我写了一个脚本,从给定的数据集中提取所有表情符号:
for message in df['Message']:
for char in message:
if char in emoji.UNICODE_EMOJI:
print(char)它在某种程度上是有效的,并正确地识别哪些字符是表情符号。然而,输出不能正确解析一些表情符号,它们只是显示为棕色正方形:
?
为什么会发生这种情况?有什么办法可以解决这个问题吗?大多数表情符号都能很好地显示出来,但也有少数表情符号不会出现。
编辑:再看一遍之后,看起来棕色的方块有一些特定的表情符号来说明所使用的色调。
然而,某些表情符号仍然存在一些问题。例如,通常的心形表情确实会显示为心形字符,但不是以表情符号的样式显示。截图,因为粘贴到这里会正确地显示出来:

发布于 2020-10-04 19:15:56
问题是,深肤色(以及一般的颜色变体)被编码为两个单独的符号,而不是一个,即两个符号? ? (第二个给出颜色)的??结果。
您可以从下面的示例中看到:
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):
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))输出:
??
? ?https://stackoverflow.com/questions/64193637
复制相似问题