python emoji 表情处理过滤

 

emoji库安装
直接pip install emoji

源数据:(数据是瞎编的哈)

emoji库主要有两个函数:
emojize()——>生成emoji表情
demojize()——>emoji表情解码

>> import emoji
>> print(emoji.emojize('Python is :thumbs_up:'))
Python is 
>> print(emoji.emojize('Python is :thumbsup:', use_aliases=True))
Python is 
>> print(emoji.demojize('Python is '))
Python is :thumbs_up:


处理
我的目的是把emoji表情剃掉,所以还需要用到re库,re就不详细叙述了。# 导入库

import emoji
import re

# 打开文件
with open('E:/python练习文件/emoji_txt.txt',encoding='UTF-8') as f:
    data = f.read()
    
# print(emoji.demojize(data)) #测试一下成功没?以及看看emoji代码
content = re.sub('(\:.*?\:)', '', emoji.demojize(data))

print(content)



结果
源文件

记录:face_with_tears_of_joy:
嗯嗯

组长:party_popper::party_popper::party_popper:
来吧
回收:face_with_tears_of_joy:
大家记得哈:face_with_tears_of_joy:

你坐哪呢?

处理后

记录
嗯嗯

组长
来吧
回收
大家记得哈

你坐哪呢?

 

注意替换的这些emoji是标准的表情字符,每个表情本来是2个字节,替换成字符串后,每个表情就变成12个字符了,浪费了很多空间,不过简单,不需要专门写个map一一对应了;

把表情变成字符串
view plain  copy

def filter_emoji(desstr,restr=''):  
    ''''' 
    过滤表情 
    '''  
    try:  
        co = re.compile(u'[\U00010000-\U0010ffff]')  
    except re.error:  
        co = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')  
    return co.sub(restr, desstr)  

把字符串变成表情

[python]  view plain  copy

def str_2_emoji(emoji_str):  
    ''''' 
    把字符串转换为表情 
    '''  
    if not emoji_str:  
        return emoji_str  
    h = HTMLParser.HTMLParser()  
    emoji_str = h.unescape(h.unescape(emoji_str))  
    #匹配u"\U0001f61c"和u"\u274c"这种表情的字符串  
    co = re.compile(ur"u[\'\"]\\[Uu]([\w\"]{9}|[\w\"]{5})")  
    pos_list=[]  
    result=emoji_str  
    #先找位置  
    for m in co.finditer(emoji_str):  
        pos_list.append((m.start(),m.end()))  
    #根据位置拼接替换  
    for pos in range(len(pos_list)):  
        if pos==0:  
            result=emoji_str[0:pos_list[0][0]]  
        else:  
            result=result+emoji_str[pos_list[pos-1][1]:pos_list[pos][0]]  
        result = result +eval(emoji_str[pos_list[pos][0]:pos_list[pos][1]])  
        if pos==len(pos_list)-1:  
            result=result+emoji_str[pos_list[pos][1]:len(emoji_str)]  
    return result  


————————————————
版权声明:本文为CSDN博主「junli_chen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/junli_chen/article/details/77685128

 

你可能感兴趣的:(python宝典)