You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.9正则移除字符串emoji部分场景失效及Unicode查询求助

问题根因

你现有正则的匹配区间未覆盖🤣对应的Unicode编码。🤣的Unicode编码为U+1F923,属于补充象形符号区间,不在你当前列出的匹配范围内,因此无法被识别替换。

修复方案

清理原有正则的冗余区间,补充新增emoji所属的\U0001F900-\U0001F9FF区间即可,修正后代码如下:

from re import UNICODE, compile
emoji_pattern = compile("["
                        u"\U0001F600-\U0001F64F"  # 表情符号
                        u"\U0001F300-\U0001F5FF"  # 符号与象形图
                        u"\U0001F680-\U0001F6FF"  # 交通与地图符号
                        u"\U0001F1E0-\U0001F1FF"  # 国旗
                        u"\U00002702-\U000027B0"  # 杂项符号
                        u"\U0001F900-\U0001F9FF"  # 补充象形符号(包含🤣等新emoji)
                        u"\U000024C2-\U0001F251"
                        u"\u200d"
                        u"\u2640-\u2642"
                        "]+", flags=UNICODE)

# 测试之前失效的案例
data = 'www.google.co.uk/?🤣'
result = emoji_pattern.subn(r'', data)
# result --> ('www.google.co.uk/?', 1) 替换成功
Python 3.9查询emoji Unicode的方法

直接使用Python内置函数即可完成查询:

  • 查询字符对应的Unicode编码:调用ord()函数获取编码的十进制值,再转成十六进制格式即可
target_char = '🤣'
print(hex(ord(target_char)))
# 输出:0x1f923,对应正则中需要写的Unicode格式为 \U0001F923
  • 查询编码对应的字符:调用chr()函数传入十六进制编码值即可反向验证
print(chr(0x1F923))
# 输出:🤣

如果不需要严格自行维护正则规则,也可以直接使用第三方emoji库的emoji.replace_emoji()方法一键移除所有emoji,适配性更高。


内容的提问来源于stack exchange,提问作者Binit Amin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:15:00