我从聊天应用程序接收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。我怎么解决这个问题?
答案 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