Find there is an emoji in a string in python3 [duplicate]

北慕城南 提交于 2020-06-22 03:19:05

问题


I want to check that a string contains only one emoji, using Python 3. For example, there is a is_emoji function that checks that the string has only one emoji.

def is_emoji(s):
    pass

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

I try to use regular expressions but emojis didn't have fixed length. For example:

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

回答1:


This works in 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)

Test:

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

Combine with Dunes' answer to avoid typing all emojis:

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)

This is not terrible fast because UNICODE_EMOJI contains nearly 1330 items, but it works.




回答2:


You could try using this emoji package. It's primarily used to convert escape sequences into unicode emoji, but as a result it contains an up to date list of emojis.

from emoji import UNICODE_EMOJI

def is_emoji(s):
    return s in UNICODE_EMOJI

There are complications though, as sometimes two unicode code points can map to one printable glyph. For instance, human emoji followed by an "emoji modifier fitzpatrick type" should modify the colour of the preceding emoji; and certain emoji separated by a "zero width joiner" should be treated like a single character.



来源:https://stackoverflow.com/questions/36216665/find-there-is-an-emoji-in-a-string-in-python3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!