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

Recognize emojis given in brackets in a String

我已将 Skype 消息存储为字符串(在 Android phone 上)。字符串可以包含 Skype 表情符号。例如,字符串可以是 "This is a test (laugh)"。表情符号用括号编码,例如(笑),(微笑)等。

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

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

请注意,Skype 和其他几个程序使用其 "emoji" 格式。真正的表情符号格式是严格指定的。有一个用于处理真实表情符号的 Python 库:emoji。您可以尝试使用 emojize 函数的 delimiters 参数和 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': ''}]

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