python emoji 表情处理过滤

本文介绍了如何使用Python的emoji库进行emoji表情的处理,包括安装emoji库、使用emojize()生成emoji表情以及demojize()进行解码。重点在于通过结合re库移除文本中的emoji表情,以达到特定的文本清理目的。示例中展示了处理前后的内容差异,并指出虽然替换过程可能导致空间浪费,但简化了处理流程。
摘要由CSDN通过智能技术生成

 

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中可以使用正则表达式和emoji库来实现对文本内容中的emoji表情进行处理过滤,使得文本内容更加干净整洁。 首先,我们可以使用emoji库来判断一个字符串是否包含emoji表情,通过emoji.emoji_count()函数可以得到字符串中emoji表情的个数。若个数大于0,则表明该字符串中包含了emoji表情。 接下来,我们可以使用正则表达式来过滤掉字符串中的emoji表情。使用re模块的sub()函数可以将字符串中匹配到的emoji表情替换为空字符串,即去除掉emoji表情。 具体实现代码如下: ```python import re import emoji def filter_emoji(text): is_emoji = False # 判断字符串中是否包含emoji表情 if emoji.emoji_count(text) > 0: is_emoji = True else: is_emoji = False # 使用正则表达式替换掉字符串中的emoji表情 text = re.sub(emoji.get_emoji_regexp(), "", text) # 返回处理后的字符串和是否包含emoji的标志 return text, is_emoji # 测试 text = "Python实现emoji表情处理😄过滤,让你的文本内容更加干净整洁。" filtered_text, has_emoji = filter_emoji(text) print("处理前的文本内容:", text) print("处理后的文本内容:", filtered_text) print("是否包含emoji表情:", has_emoji) ``` 经过处理,输出结果为: ``` 处理前的文本内容: Python实现emoji表情处理😄过滤,让你的文本内容更加干净整洁。 处理后的文本内容: Python实现emoji表情处理过滤,让你的文本内容更加干净整洁。 是否包含emoji表情: True ``` 通过以上代码,我们可以实现对文本中的emoji表情进行处理过滤,从而让文本内容更加干净整洁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值