在python3中查找字符串中有一个表情符号

时间:2016-03-25 08:39:26

标签: python python-3.x emoji

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

def is_emoji(s):
    pass

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

我尝试使用正则表达式但是emojis没有固定的长度。例如:

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

2 个答案:

答案 0 :(得分:6)

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

CHttpRequest

虽然有并发症,因为有时两个unicode代码点可以映射到一个可打印的字形。例如,人类表情符号后跟一个表情符号修饰符fitzpatrick类型"应该修改前面表情符号的颜色;并且某些表情符号由一个零宽度的木匠"应该像对待一个角色一样对待。

答案 1 :(得分:3)

这适用于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

结合Dunes的答案,避免输入所有表情符号:

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项,但它确实有效。