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

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

[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在浏览器显示为’?’
学习笔记——Python去除部分emoji特殊符号_第2张图片
其原样式:
学习笔记——Python去除部分emoji特殊符号_第3张图片
百度的显示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字符。
完美解决!!

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

你可能感兴趣的:(学习笔记——Python去除部分emoji特殊符号)