发布于2026-07-17 阅读(0)
扫一扫,手机访问
import re
def remove_emoji_by_regex(text):
"""
使用正则表达式去除 Emoji
主要覆盖了表情符号、杂项符号、交通地图符号等常见范围
"""
# Unicode Emoji 的主要范围
emoji_pattern = re.compile(
"["
u"\U0001F600-\U0001F64F" # 表情符号 (Emoticons)
u"\U0001F300-\U0001F5FF" # 杂项符号和象形文字 (Miscellaneous Symbols And Pictographs)
u"\U0001F680-\U0001F6FF" # 交通和地图符号 (Transport and Map Symbols)
u"\U0001F1E0-\U0001F1FF" # 旗帜 (Flags)
u"\U00002702-\U000027B0" # 杂项符号 (Dingbats)
u"\U000024C2-\U0001F251" # 补充符号
"]+",
flags=re.UNICODE
)
return emoji_pattern.sub(r'', text)
# 测试
text = "今天天气真好 ☀️,我们去公园吧 ?!?"
clean_text = remove_emoji_by_regex(text)
print(f"原文本: {text}")
print(f"清洗后: {clean_text}")
输出:
原文本: 今天天气真好 ☀️,我们去公园吧 ?!? 清洗后: 今天天气真好 ,我们去公园吧 !它的优点很明显:不用安装第三方库,执行速度快。不过,正则表达式也不是万能的。Unicode标准更新太快,今天能用的规则,明天可能就漏了。而且,那些由多个Unicode组合而成的复杂Emoji,比如ZWJ序列,正则表达式处理起来往往力不从心。
unicodedata 模块可以查询字符的类别。很多 Emoji 属于 So (Symbol, other) 类别。我们可以利用这一点进行过滤。
import unicodedata
def remove_emoji_by_category(text):
"""
利用 Unicode 类别去除控制字符和符号
"""
# 保留所有不属于 'So' (Symbol, Other) 和 'Cs' (Surrogate) 的字符
# 注意:这种方法比较激进,可能会误删一些特殊的数学符号或装饰符号
return ''.join(c for c in text if unicodedata.category(c) != 'So')
# 测试
text = "Python is fun ?"
clean_text = remove_emoji_by_category(text)
print(clean_text)
这种方法的好处是纯Python标准库实现,无需额外安装。但缺点也很明显:不够精准。它会把所有属于 So 类别的符号都删掉,包括一些非 Emoji 的特殊符号,比如版权符号 ©、注册商标 ® 等,容易造成“误伤”。
emojipip install emoji
import emoji text = "I love Python ? and ☕" clean_text = emoji.replace_emoji(text, replace='') print(clean_text) # 输出: I love Python and
:face_with_tears_of_joy:,这样既保留了情感含义,又变成了纯文本,非常适合喂给机器学习模型。
import emoji
text = "今天好开心 ?"
# demojize 会把表情转为 :shortcode: 格式
text_demoji = emoji.demojize(text, delimiters=("", ""))
print(text_demoji)
# 输出: 今天好开心 :face_with_tears_of_joy:
它的优点很突出:识别准确率最高(基于官方 Unicode 数据),支持 demojize 功能保留语义,API 简单易用。唯一的代价是需要安装一个第三方库,但相比它带来的精准度,这点开销完全可以忽略。
def remove_colored_symbols(text):
# 移除 杂项符号和象形文字扩展-A 块中的彩色块
return re.sub(r'[\U0001F7E0-\U0001F7EB\U0001F7E0-\U0001F7EB\U0001F534-\U0001F53A]', '', text)
text = "选项 A ? 选项 B ?"
print(remove_colored_symbols(text))
# 输出: 选项 A 选项 B
| 方法 | 适用场景 | 准确度 | 依赖 | 推荐指数 |
|---|---|---|---|---|
| 正则表达式 | 快速脚本、轻量级任务 | ⭐⭐⭐ | 无 | ⭐⭐⭐⭐ |
| unicodedata | 严格标准库环境 | ⭐⭐ | 无 | ⭐⭐ |
| emoji 库 | 生产环境、NLP 预处理 | ⭐⭐⭐⭐⭐ | 第三方库 | ⭐⭐⭐⭐⭐ |
| 混合方案 | 极端复杂的清洗需求 | ⭐⭐⭐⭐ | 正则+库 | ⭐⭐⭐ |
emoji 库,甚至考虑使用 demojize 将表情转为文字,保留情感特征。emoji 库。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8