首页 > 解决方案 > 识别字符串中括号中的表情符号

问题描述

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

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

有没有一种优雅的方法来计算字符串中表情符号的数量并在 Python 中删除它们?

标签: pythonstringemoji

解决方案


请注意,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“表情符号”等构建自己的字典。


推荐阅读