【问题标题】:Get all emojis in a string获取字符串中的所有表情符号
【发布时间】:2021-03-12 14:21:48
【问题描述】:

我正在尝试创建一个函数,以便将完整的字符串传递给它,它会找到并返回任何存在的表情符号。例如,如果有 2 个表情符号,它应该返回两个。我该怎么做?

目前,我只能理解如何检查一个特定的表情符号。这是我用来检查的函数:

def check(string):
    if '✅' in string:
        print('found', string)

我想在不指定任何表情符号的情况下执行此操作,只查找所有表情符号。我考虑过from emoji import UNICODE_EMOJI

import emoji
import regex

def split_count(text):
    emoji_counter = 0
    data = regex.findall(r'\X', text)
    for word in data:
        if any(char in emoji.UNICODE_EMOJI for char in word):
            emoji_counter += 1
            # Remove from the given text the emojis
            text = text.replace(word, '') 

    words_counter = len(text.split())

    return emoji_counter, words_counter

虽然这给了我们一个计数,但我不确定如何修改它以获取所有表情符号。

【问题讨论】:

标签: python python-3.x emoji


【解决方案1】:

您可以检查信件是否在emoji.UNICODE_EMOJI:

import emoji

def get_emoji_list(text):
    return [letter for letter in text if letter in emoji.UNICODE_EMOJI]

print(get_emoji_list('✅aze✅'))
# ['✅', '✅']

如果您想要一组独特的表情符号,请在函数中更改您的理解以创建 set 而不是 list

import emoji

def get_emoji_set(text):
    return {letter for letter in text if letter in emoji.UNICODE_EMOJI}

print(get_emoji_list('✅aze✅'))
# {'✅'}

【讨论】:

  • 对 OP 的警告:看起来 UNICODE_EMOJI 将在未来的版本中成为 dicts 的 dict(外部 dict 将语言代码映射到每种语言dict 您当前正在使用)感谢this pull request。您可能想做from emoji import UNICODE_EMOJI 之类的操作,然后执行try:UNICODE_EMOJI = UNICODE_EMOJI['en']except KeyError: pass 以确保它在未来按预期工作(try/except 将触发并且现在什么都不做,并且以后查英文dict)。
  • 可以用.get(...)代替UNICODE_EMOJI["en*],避免使用try except
【解决方案2】:

这个emoji_finder 方法yields 是找到表情符号的单词。因此generator object 可以转换为列表并在任何你想要的地方使用。

import emoji
import regex

def emoji_finder(text):
    emoji_counter = 0
    data = regex.findall(r'\X', text)
    for word in data:
        if any(char in emoji.UNICODE_EMOJI for char in word):
            emoji_counter += 1
            text = text.replace(word, '') 
            yield word

print(list(split_count(stringWithEmoji))) #prints all the emojis in stringWithEmoji

【讨论】:

    猜你喜欢
    • 2016-08-16
    • 2017-12-27
    • 2022-06-22
    • 1970-01-01
    • 2017-11-28
    • 2019-04-22
    • 2011-02-25
    • 1970-01-01
    • 2020-03-28
    相关资源
    最近更新 更多