剔除 emoji 表情

这篇博客介绍了如何在Python中处理Unicode Emoji表情。通过`emoji`库的`demojize`和`emojize`方法,可以实现Emoji的编码和解码。另外,还提供了一个自定义函数`filter_emoji`,利用正则表达式过滤掉字符串中的Emoji表情。这些方法对于处理包含Emoji的数据存储和解析至关重要。
摘要由CSDN通过智能技术生成
import emoji

test_str = """服务周到,性价比高,量还多,强烈推荐😍😍😍"""
result = emoji.demojize(test_str)
print(result)
print(emoji.emojize(result))

# 使用demojize方法:用emoji短代码替换字符串中的unicode emoji(即emoji表情)。用于存储,相当于对emoji表情编码
# 使用emojize方法:将emoji短代码解码成emoji表情。
# 方法二
import re


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)

"""
re.sub(pattern, repl, string, count=0, flags=0)
1)函数功能:从左向右把string中能匹配到的字符串,换成repl。将替换后的string返回,如果没有匹配,返回原string。
2)前三个位置参数必写,后两个位置参数是可选参数, pattern 是表达式,string被查找的字符串。

参数repl : 可以是字符串,也可以是函数名。
当是字符串时,匹配到的字符串,都将替换为repl;
当repl 是一个函数的函数名时。此时应是有目的的定义这个函数,而且它的参数只有一个,是匹配到的字符串,并用返回值来替换匹配的字符串。

count : 指定配后替换的最大次数,默认 0 表示替换所有的匹配。

flags,可选标志。如:re.I,re.S , re.M等。
"""

if __name__ == '__main__':
    test_str = """服务周到,性价比高,量还多,强烈推荐😍😍😍"""
    print(filter_emoji(test_str))

之前看过一个帖子 [宇宙最强]编码转换/解决易语言 不能显示字符(包括emoji)https://bbs.125.la/forum.php?mod=viewthreadtid=14254478 该模块用于emoji编码转换,不过略有缺陷,参考其结构进行改造,精简 emoji表情的编码android和ios两种操作系统的使用的码元不一样,本模块实现同时兼容两种系统的emoji编码 原理: VX客户Duan使用的是unicode编码(utf-16le),检测出emoji表情字符或易不能显示的字符,对其使用UCS-4进行编码(使用易自带的编码转换库) 示例: 原始文本: android数据:{ 4, 226, 100, 0, 97, 0, 42, 227, 118, 86, 62, 216, 129, 221, 82, 224, 98, 86, 98, 86, 80, 224, 60, 216, 8, 223, 62, 216, 37, 221, 53, 0, 53, 0, 52, 0, 62, 216, 32, 221, 87, 93, 244, 78, 51, 109, 40, 98, 62, 216, 36, 221, 53, 0, 54, 0, 106, 0, 104, 0, 102, 0, 70, 226, 106, 0, 104, 0, 102, 0, 100, 0, 75, 226, 60, 216, 245, 221, 60, 216, 249, 221, 17, 229, 168, 88, 92, 149, 60, 216, 248, 221, 60, 216, 236, 221, 60, 216, 225, 223, 253, 78, 80, 91, 177, 148, 60, 216, 220, 223, 201, 98, 201, 98, 228, 136, 49, 0, 50, 0, 51, 0 } android编码后:[u+E204]da[u+E32A]噶[u+1F981][u+E052]噢噢[u+E050][u+1F308][u+1F925]554[u+1F920]嵗仴洳戨[u+1F924]56jhf[u+E246]jhfd[u+E24B][u+1F1F5][u+1F1F9][u+E511]墨镜[u+1F1F8][u+1F1EC][u+1F3E1]份子钱[u+1F3DC]拉拉裤123 ios数据:{ 61, 216, 159, 220, 100, 0, 97, 0, 61, 216, 153, 220, 118, 86, 62, 216, 129, 221, 61, 216, 54, 220, 98, 86, 98, 86, 61, 216, 47, 220, 60, 216, 8, 223, 62, 216, 37, 221, 53, 0, 53, 0, 52, 0, 62, 216, 32, 221, 87, 93, 244, 78, 51, 109, 40, 98, 62, 216, 36, 221, 53, 0, 54, 0, 106, 0, 104, 0, 102, 0, 79, 38, 106, 0, 104, 0, 102, 0, 100, 0, 206, 38, 60, 216, 245, 221, 60, 216, 249, 221, 60, 216, 234, 221, 60, 216, 248, 221, 168, 88, 92, 149, 60, 216, 248, 221, 60, 216, 236, 221, 60, 216, 225, 223, 253, 78, 80, 91, 177, 148, 60, 216, 220, 223, 201, 98, 201, 98, 228, 136, 49, 0, 50, 0, 51, 0 } ios编码后:[u+1F49F]da[u+1F499]噶[u+1F981][u+1F436]噢噢[u+1F42F][u+1F308][u+1F925]554[u+1F920]嵗仴洳戨[u+1F924]56jhf[u+264F]jhfd[u+26CE][u+1F1F5][u+1F1F9][u+1F1EA][u+1F1F8]墨镜[u+1F1F8][u+1F1EC][u+1F3E1]份子钱[u+1F3DC]拉拉裤123
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值