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

Python移除简单表情符号:如何保留标点仅删除表情?

移除文本中的表情符号(保留正常标点)

嘿,我来帮你搞定这个问题!要精准移除像;-)这类颜文字表情,同时保留?这类正常标点,正则表达式是最直接的解决方案。针对你的需求,我给你两种实用的处理方式:

1. 针对颜文字表情(如;-)、:)、:D)

这类表情通常由标点符号组合而成,我们可以写一个正则匹配这类模式,替换后再清理多余空格:

import re

original_text = "ca va toi ;-) ?"
# 匹配常见颜文字的正则:覆盖分号/冒号开头,可选连字符,括号/D类收尾的表情
emoticon_pattern = r'[:;=]-?[()DdPp]'
# 第一步:移除表情
temp_text = re.sub(emoticon_pattern, '', original_text)
# 第二步:清理多余的连续空格(移除表情后可能留下空白)
cleaned_text = re.sub(r'\s+', ' ', temp_text).strip()

print(cleaned_text)  # 输出:ca va toi ?

正则解释:

  • [:;=]:匹配颜文字的起始符号(分号、冒号、等号,都是常见的表情开头)
  • -?:匹配可选的连字符(有的表情带连字符如;-),有的不带如:))
  • [()DdPp]:匹配表情的收尾符号(括号、大小写D/P,对应微笑、大笑、吐舌头这类表情)

如果你的场景里还有其他特殊颜文字(比如:-@、:*),可以扩展这个正则的字符集,比如改成[:;=]-?[()DdPp@*]就行。

2. 同时处理Unicode表情(如😊😎)

如果你的文本里还有Unicode标准表情,也可以用下面的正则一起移除:

import re

original_text = "ca va toi ;-) 😊 ?"
# 合并颜文字和Unicode表情的正则
combined_pattern = r'[:;=]-?[()DdPp]|[\U0001F600-\U0001F64F\U0001F300-\U0001F5FF\U0001F680-\U0001F6FF\U0001F1E0-\U0001F1FF]'
temp_text = re.sub(combined_pattern, '', original_text)
cleaned_text = re.sub(r'\s+', ' ', temp_text).strip()

print(cleaned_text)  # 输出:ca va toi ?

这个Unicode正则覆盖了绝大多数常见的表情符号范围,基本能满足日常需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:55:36