前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python string中删除(过滤)

Python string中删除(过滤)

作者头像
py3study
发布2020-01-10 17:18:36
1.3K0
发布2020-01-10 17:18:36
举报
文章被收录于专栏:python3python3python3

最近做了一个需求,把公众号的用户信息同步到服务端,发现很多用户的昵称里面都有表情符号(emoji), 一般的处理方式是把MySQL的编码改成 utf8mb4,后来讨论了下,这些表情也没什么用,入库的时候直接删除就好了。

过滤方法

Python怎么过滤 emoji表情符号呢? 下面是剔除表情字符串的代码片段 python2.7 下测试

import re

emoji_pattern = re.compile(
    u"(\ud83d[\ude00-\ude4f])|"  # emoticons
    u"(\ud83c[\udf00-\uffff])|"  # symbols & pictographs (1 of 2)
    u"(\ud83d[\u0000-\uddff])|"  # symbols & pictographs (2 of 2)
    u"(\ud83d[\ude80-\udeff])|"  # transport & map symbols
    u"(\ud83c[\udde0-\uddff])"  # flags (iOS)
    "+", flags=re.UNICODE)

def remove_emoji(text):
    return emoji_pattern.sub(r'', text)

参考 removing-emojis-from-a-string-in-python , 如果正则没有写对 还可以遇到 sre_constants.error: bad character range 之类的错误 。

这里根据 unicode 范围来删除表情符号,通用的和IOS中的,应该不是很全,也没找到非常全的list。后面证实还是有写过滤不掉,最好还是把字段改成utf8mb4。。如果有更全的过滤方法,欢迎分享

修改字符编码

不能完全过滤又要存储,只好修改 带有 emoji 表情字段 的编码设置 (mysql5.6测试)

ALTER TABLE `table_name` MODIFY `nickname` VARCHAR(40) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

因为MySQL 存储 utf8mb4 时候使用 4 个字节,比直接使用utf8占用的空间更多 charset-unicode-utf8mb4,所以请重新考虑下字段的长度 , 否则可能会出现 (1406, "Data too long for column 'nickname' at row 1") 之类的错误。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 过滤方法
  • 修改字符编码
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档