在 python3 中找到一个字符串中的表情符号

Find there is an emoji in a string in python3

我想检查一个字符串是否只包含一个表情符号,使用 Python 3. 例如,有一个 is_emoji 函数可以检查字符串是否只有 个表情符号。

def is_emoji(s):
    pass

is_emoji("") #True
is_emoji("◼️") #False

我尝试使用正则表达式,但表情符号没有固定长度。例如:

print(len("◼️".encode("utf-8"))) # 6 
print(len("".encode("utf-8"))) # 4

这适用于 Python 3:

def is_emoji(s):
    emojis = "◼️" # add more emojis here
    count = 0
    for emoji in emojis:
        count += s.count(emoji)
        if count > 1:
            return False
    return bool(count)

测试:

>>> is_emoji("")
True
>>> is_emoji('◼')
True
>>> is_emoji("◼️")
False

结合沙丘的回答避免输入所有表情符号:

from emoji import UNICODE_EMOJI

def is_emoji(s):
    count = 0
    for emoji in UNICODE_EMOJI:
        count += s.count(emoji)
        if count > 1:
            return False
    return bool(count)

这并不可怕,因为 UNICODE_EMOJI 包含将近 1330 个项目,但它确实有效。

您可以尝试使用这个 emoji 包。它主要用于将转义序列转换为 unicode 表情符号,但因此它包含一个最新的表情符号列表。

from emoji import UNICODE_EMOJI

def is_emoji(s):
    return s in UNICODE_EMOJI

虽然有些复杂,因为有时两个 unicode 代码点可以映射到一个可打印字形。例如,人类表情符号后跟 "emoji modifier fitzpatrick type" 应该修改前面表情符号的颜色;并且某些由 "zero width joiner" 分隔的表情符号应被视为单个字符。