如何在python

时间:2017-07-20 05:00:35

标签: python unicode split

我从聊天应用程序接收emojies,我想在有多个表情符号时将每个表情符号分开。我能够将单个表情符号作为unicode值捕获。但是,split函数不适用于多个表情符号unicode值。此代码适用于单个表情符号

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)

我试过这个来分隔多个表情符号

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方法再次返回encode_data。我怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

re.findall(ur'.', data) 

你会得到:

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

3 emojies == 6 unicode chars

另一种方式:

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。 编辑: 如果是使用UCS-4的Python:

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