pythonpython-3.xemoji

Find there is an emoji in a string in python3


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

Solution

  • 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.