Python中的表情符号

时间:2018-09-04 04:44:33

标签: python emoji

我正在尝试使用python处理我的小型项目(最近开始学习它),并且正在尝试制作一个表情符号转换器。我的意思是,当文本包含表情符号时,转换器会将其转换为表情符号。一个例子是:

  

要翻译的字符串:微笑!你太酷了。

     

翻译:!你也是。

问题是,我完全不知道从哪里开始,而我尝试做的事情总是给我同样的错误:

  

UnicodeEncodeError:'UCS-2'编解码器无法编码字符'\ U0001f40d'   位置0:Tk不支持非BMP字符

有什么建议吗? 预先感谢

1 个答案:

答案 0 :(得分:3)

https://pypi.org/project/emoji/

没有太多的文档,但是您可以通过在github https://github.com/carpedm20/emoji/search?q=emojize&unscoped_q=emojize

上进行探索来获得一些想法。
import emoji
import os
from string import punctuation

#example 1
string_to_translate1 = ":smile:! You're too :cool:."
translation1 = emoji.emojize(string_to_translate1,use_aliases=True,delimiters =(':',':'))

#example 2
string_to_translate2 = ":smile:! You're too :sunglasses:."
translation2 = emoji.emojize(string_to_translate2,use_aliases=True,delimiters =(':',':'))

#example 3
def custom_emojizer(user_text):
    temp_word_list = []

    for w in user_text.split():
        word = w
        endwith = ''
        for idx,char in enumerate(word):
            if char in punctuation:
                endwith = word[idx:]
                word = word.strip(char)
                break

        word_emoji = emoji.emojize(':'+word.lower()+':',use_aliases=True,delimiters =(':',':'))

        if ':' in word_emoji:
            temp_word_list.append(w)
        else:
            temp_word_list.append(word_emoji+endwith)

    return ' '.join(temp_word_list)


string_to_translate3 = "Smile! You're too cool."
translation3 = custom_emojizer(string_to_translate3)


with open('test.html','w+',encoding='utf-8-sig') as f:
    f.write(translation1+'<br>')
    f.write(translation2+'<br>')
    f.write(translation3)
os.startfile('test.html')

我们在custom_emojizer中做什么?

因为您在user_string中输入了“ 微笑!你太酷了。' 您在单词的末尾使用标点符号,并且单词可以是大写字母/标题大写字母,并且没有分隔符,我们需要在user_string中循环搜索单词,然后1)删除标点符号,然后2)将单词转换为lower()和3)在将其提供给emoji.emojize之前添加定界符,然后,如果将单词成功转换为emoji,我们将没有任何定界符,我们需要做的就是在标点符号后加上标点符号,否则我们将只添加原始单词。

输出:

! You're too .
! You're too .
! You're too .