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

如何在Python中移除字符串中除表情符号外的所有字符?

Python 保留字符串中的表情符号并移除其他字符

要实现只保留字符串里的表情符号、移除所有其他字符的功能,可以利用表情符号在Unicode中的特定编码区间,结合正则表达式来完成。下面是我自己实现的可行方案:

实现代码

import re

def keep_only_emojis(text):
    # 涵盖主流表情符号的Unicode区间正则
    emoji_regex = re.compile(
        "["
        u"\U0001F600-\U0001F64F"  # 普通表情
        u"\U0001F300-\U0001F5FF"  # 符号&象形文字
        u"\U0001F680-\U0001F6FF"  # 交通/地图符号
        u"\U0001F1E0-\U0001F1FF"  # 国旗
        u"\U00002500-\U00002BEF"  # 方块/线条符号
        u"\U00002702-\U000027B0"
        u"\U000024C2-\U0001F251"
        u"\U0001F926-\U0001F937"
        u"\U00010000-\U0010FFFF"
        u"\u2640-\u2642"
        u"\u2600-\u2B55"
        u"\u200d"
        u"\u23cf"
        u"\u23e9"
        u"\u231a"
        u"\ufe0f"  # 表情变体符号
        u"\u3030"
                      "]+",
        flags=re.UNICODE
    )
    # 提取所有匹配的表情并拼接
    return ''.join(emoji_regex.findall(text))

测试示例

test_str = "Hi there! 😂 工作好累啊 🥱 周末去爬山 🧗"
filtered_str = keep_only_emojis(test_str)
print(filtered_str)  # 输出:😂🥱🧗

补充说明

  • 这个正则表达式覆盖了绝大多数常见表情符号,如果遇到某些特殊表情没被匹配到,可以自行补充对应的Unicode编码区间。
  • 也可以用替换的写法,把非表情的字符直接替换为空,效果一样:
    def keep_only_emojis_v2(text):
        emoji_regex = re.compile(...)  # 同上的正则内容
        return emoji_regex.sub('', text)
    

我之前急需这个功能时自己写了这段代码,亲测能满足日常场景的需求,希望能帮到有需要的人。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:35:17