Sajith Herath
Sajith Herath

Reputation: 1052

how to split emoji unicode strings in python

I'm receiving emojies from a chat application and i want to separate each single emoji when there are multiple emojies. I'm able to catch a single emoji as an unicode value.but split function does't work for multiple emoji unicode values.This code is for a single emoji

def getEmoji(data)
    sleepy_face = [u'\U0001F6CC', u'\U0001F634', u'\U0001F4A4']

    if (data in sleepy_face):
        return emoji.emojize('Are you sleepy? :slightly_smiling_face:', use_aliases=True)

I tried this to separate multiple emojies

encode_data=data.encode('raw_unicode_escape')
find_data = encode_data.split(b'\\\\')
for extract_data in find_data:
    print(extract_data)
    if (extract_data in sleepy_face):
        return emoji.emojize('Are you sleepy? :slightly_smiling_face:', use_aliases=True)  

Split method returns again encode_data. How can i solve this?

Upvotes: 0

Views: 628

Answers (1)

Zep
Zep

Reputation: 46

import re
data = u'\U0001f6cc\U0001f634\U0001f4a4'
for i in re.findall(ur'..', data):
    print i
    if i in sleepy_face:
        return 

when run:

re.findall(ur'.', data) 

you will get:

[u'\ud83d', u'\udecc', u'\ud83d', u'\ude34', u'\ud83d', u'\udca4']

3 emojies == 6 unicode chars.

Another way:

s =  u'\U0001F6CCabc\U0001F634bcd\U0001F4A4'
for i in re.findall(ur'([\ud000-\udfff][\ud000-\udfff])', s): 
    # change range '\ud000'-'\udfff'
    print i 

thx @IgnacioVazquez-Abrams. Edit: if Python with UCS-4:

for i in re.findall(".", data):
    if i in sleepy_face:
        print i

Upvotes: 1

Related Questions