识别字符串括号中给出的表情符号

时间:2019-05-22 14:59:20

标签: python string emoji

我已将Skype消息存储为字符串(在Android手机上)。字符串可以包含Skype表情符号。例如,字符串可以是“这是一个测试(笑)”。表情符号编码在方括号中,例如(笑),(微笑)等。

现在,我想计算一个句子中的表情符号数量,并从句子中删除该表情符号。当然,我可以只计算()对的数量并删除它们,但这也将删除括号中给出的普通文本。此外,在极少数情况下,表情符号也可能以:(或:/等形式给出。

是否存在一种优雅的方法来计算字符串中的表情符号数量并在Python中将其删除?

1 个答案:

答案 0 :(得分:2)

请注意,Skype和其他几个程序使用其“表情符号”格式。严格指定真正的表情符号格式。有一个用于处理真实表情符号的Python库:emoji。您可以尝试使用delimiters函数的emojize参数和emoji_lis函数来查找表情符号:

import emoji

waka = ':smile: :) (smile) :smiling_face: WAKA (sign_of_the_horns_medium-light_skin_tone) :speak-no-evil_monkey:'
print(emoji.emoji_lis(emoji.emojize(waka, use_aliases=True)))

[{'location': 0, 'emoji': ''}, {'location': 13, 'emoji': '☺'}, {'location': 63, 'emoji': ''}]
print(emoji.emoji_lis(emoji.emojize(waka, delimiters=('(', ')'))))

[{'location': 39, 'emoji': ''}]

请注意,您不会找到笑脸(例如:):(等),只有表情符号。您也无法在文本中找到每个“表情符号”,因为您不能保证Skype使用的是官方表情符号名称(此外,我确信它不是使用它们)。如果您也想找到微笑,则应该使用微笑,Skype“表情符号”等来构建自己的字典。