如何在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
相关产品推荐
相关产品推荐

