简体   繁体   English

将表情符号 unicode 转换为 python 中的文本

[英]convert emoji unicode to TEXT in python

I have an application made in python (yowsup), I receive text and emoji in my bot... I manage to get the to convert to "\U0001F600" code...我有一个在 python (yowsup) 中制作的应用程序,我在我的机器人中收到文本和表情符号...我设法将其转换为“\U0001F600”代码...

now i need to convert u"\U0001F600" to:grinning: TEXT or GRINNING FACE现在我需要将 u"\U0001F600" 转换为:grinning: TEXT 或 GRINNING FACE

got some source from this page.... http://www.fileformat.info/info/unicode/char/1F600/index.htm从此页面获得了一些来源.... http://www.fileformat.info/info/unicode/char/1F600/index.htm

@signals.message_received.connect
def handle(message):
    #message.log() to see message object properties
    #print(message.log())
    params = {}
    params_upload = {}
    zapsend_host = config.config_variables['zapsend_host']
    zapsend_port = config.config_variables['zapsend_port']

    # CASE TEXT-MESSAGE AND NOT GROUP
    if helper.is_text_message(message.message_entity) and helper.isGroupJid(message.conversation) == False:
        #converted here....
        params['msg']  = message.text.encode('unicode_escape') 
        params['number']  = message.conversation
        params['whatsapp']= config.config_variables['user']
        params['media'] = 'text'
        params['caption'] = ''
        params['name'] = message.who_name
        database_helper.sync_contacts(message.conversation, message.who_name)
        database_helper.save_message_receive(params, message)
        print("MSG FROM CLIENT: "+ message.conversation +" => " + params['msg'])
        requests_helper.request_get(zapsend_host, zapsend_port,'zapsend',params)

@sealabr check this. @sealabr检查此。

import emoji
print(emoji.demojize('Python is 👍'))
>>Python is :thumbs_up:

This approach will handle both:这种方法将同时处理:

  • emojis:表情符号:
  • emoticons: :-)) ;表情符号: :-)) ; 8‑D 8维

Using the emot library and a bit of text manipulation: Using flashtext as it is much faster than regular expression for exact string find and/or replace.使用emot库和一些文本操作:使用flashtext ,因为它比正则表达式要快得多,可以精确地查找和/或替换字符串。

from emot.emo_unicode import UNICODE_EMOJI, UNICODE_EMOJI_ALIAS, EMOTICONS_EMO
from flashtext import KeywordProcessor

## formatting
all_emoji_emoticons = {**EMOTICONS_EMO,**UNICODE_EMOJI_ALIAS, **UNICODE_EMOJI_ALIAS}
all_emoji_emoticons = {k:v.replace(":","").replace("_"," ").strip() for k,v in all_emoji_emoticons.items()}

kp_all_emoji_emoticons = KeywordProcessor()
for k,v in all_emoji_emoticons.items():
    kp_all_emoji_emoticons.add_keyword(k, v)
kp_all_emoji_emoticons.replace_keywords('I am an 👽 hehe :-)). Lets try another one 😲. It seems 👌')

#output==> 'I am an alien hehe Very happy. Lets try another one astonished. It seems ok hand'

Try this: 尝试这个:

s = u'\U0001f600'
from emoji.unicode_codes import UNICODE_EMOJI

print UNICODE_EMOJI[s]
>:grinning_face:

this assumes you have the module emoji installed 这假设您已经安装了模块表情符号

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM