杨氏 发表于 2022-5-11 23:28

救救孩子吧 python如何去掉字符串中的表情符号

如图去掉text中的符号,研究了一晚上了,也试过了网上很多方法都不行,来个大佬救救孩子吧

tsu.xxw 发表于 2022-5-11 23:28

word='你好\ud83d\udc90啊'
import re

def filter_emoji(desstr, restr=''):
    # 过滤表情
    res = re.compile(u'[\U00010000-\U0010ffff\\uD800-\\uDBFF\\uDC00-\\uDFFF]')
    return res.sub(restr, desstr)

print(filter_emoji(word))

然并卵zh 发表于 2022-5-11 23:42

https://zhuanlan.zhihu.com/p/440300772
这个好像可以

LuoShang 发表于 2022-5-11 23:42

可以整一个只取中文

杨氏 发表于 2022-5-12 08:53

然并卵zh 发表于 2022-5-11 23:42
https://zhuanlan.zhihu.com/p/440300772
这个好像可以

也是不行

花不开但要富贵 发表于 2022-5-12 09:10

本帖最后由 1047861073 于 2022-5-12 09:18 编辑

哈哈哈哈,好巧,刚好遇到相同问题
你也应该是因为MySQL 存储不了4个字节的原因吧,
如果是可以把MySQL的字符集改成 utf8mb4 就可以了
下面代码根据 unicode 范围来删除表情符号,通用的和IOS中的,应该不是很全,也没找到非常全的list。最好还是把字段改成utf8mb4。。



下面是解决方案
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)
    u"\u2600-\u26FF\u2700-\u27BF]"
    "+", flags=re.UNICODE)


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


text2 = '你好\ud83d\udc90啊'
done = remove_emoji(text2)
print(f'处理后的文字:\n{done}')

杨氏 发表于 2022-5-12 09:34

1047861073 发表于 2022-5-12 09:10
哈哈哈哈,好巧,刚好遇到相同问题
你也应该是因为MySQL 存储不了4个字节的原因吧,
如果是可以把MySQL的 ...

谢谢,我是在对爬去到的数据进行导入excel处理,数据中有特殊符号导致打不开excel,所以只能做过滤处理
页: [1]
查看完整版本: 救救孩子吧 python如何去掉字符串中的表情符号