python2 去除 字符串中emoji 符号,去除所有4字节utf8字符

10 篇文章 0 订阅
4 篇文章 0 订阅

对咱们天朝程序员来说,最常用的编码方式就是UTF-8了。大家在创建数据库的时候,总是条件反射选择UTF-8编码。
最近我遇到一个emoji 符号不能写入数据库得问题。通过查询资料得知,emoji 符号占据4个字符长度,而MySQL的utf-8编码只能写入最多3个字节的字符。想要写入emoji 符号,需要将数据库的编码方式改为 utf8mb4 。
然而,我这张表是一张比较老的表,其中存了很多的数据。修改他的结构怕会引起其他问题。所以只能想别的办法。
在我这里这个数据去除emoji 符号也能符合系统的要求,于是我开始想办法去除emoji 符号。开始我想取得找到emoji的编码范围,把这个范围内的字符都干掉。后来我发现emoji的分布范围比较分散,我没有找到能去除所有emoji符号的范例。
我又想到一个办法,把所有四字节utf8字符干掉不就行了嘛。以下是代码

    try:
        text = unicode(text,"utf-8")
    except TypeError as e:
        pass
    try:
        highpoints = re.compile(u'[\U00010000-\U0010ffff]')
    except re.error:
        highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
    return highpoints.sub(u'',text)

如果有帮到您,打个赏呗
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值