学习笔记——Python去除部分emoji特殊符号

最近在作业时爬取github项目的概述时,发现有特殊字符
诸如这种:
在字符串中含有emoji符号这里插入图片描述
由于需要向数据库存入,所以有两种解方案:
1、过滤此字符串中的emoji
2、使mysql数据库兼容emoji表情存储
此时我选择第二种:
具体步骤:
找到mysql的配置文件,示例为windows:
在这里插入图片描述
在该文件末尾添加如下代码:

[client]  
default-character-set = utf8mb4  
[mysql]  
default-character-set = utf8mb4  
[mysqld]  
character-set-client-handshake = FALSE  
character-set-server = utf8mb4  
collation-server = utf8mb4_unicode_ci  
init_connect='SET NAMES utf8mb4'  

重启mysql服务
随后修改表结构,代码如下:

ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE `表名` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

注意分号

成功存入数据库后,在将数据库数据在前段展示时:
发现部分emoji在浏览器显示为’?’
在这里插入图片描述
其原样式:
在这里插入图片描述
百度的显示emoji方法以及原网页显示方法都为添加一个图片链接,因为嫌麻烦,而且其本身无太大作用,我想起来了方法1,搜到的有效方法,Python代码如下:

str ='🏡 Open source home automation that puts local control and privacy first'
def filter_emoji(desstr, restr=''):
    # 过滤表情
    try:
        res = re.compile(u'[\U00010000-\U0010ffff]')
    except re.error:
        res = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
    return res.sub(restr, desstr)
resultStr = filter_emoji(str)
print(resultStr)

测试发现其只能过滤部分emoji表情,但是在多次测试后发现,过滤的emoji字符刚好全为在浏览器不能正常显示的emoji字符。
完美解决!!

但是对原理并不理解,欢迎带佬指导一波。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值