Python中如何筛选包含emoji/颜文字表情的Pandas DataFrame行?
Pandas筛选包含emoji或颜文字行的实现方案
核心思路是同时匹配两类目标内容:Unicode标准emoji、标点组合的常见颜文字,步骤如下:
- 安装依赖库
用emoji库做标准emoji识别,避免手动写Unicode正则漏匹配的问题,安装命令:pip install pandas emoji - 编写匹配逻辑
- 用
emoji库自带的计数方法判断字符串是否包含标准emoji - 用正则匹配
:)、:-)这类由标点组成的常见颜文字
- 用
- 完整可运行代码
import pandas as pd import emoji import re # 构造和提问一致的测试数据 df = pd.DataFrame({ 'sentence': [ '😎🤘🏾', 'I like it', '+1😍😘', 'One :-) :)', 'hah' ] }) # 编译常见西文颜文字的匹配正则,可根据需要覆盖的颜文字范围自行扩展 emoticon_re = re.compile(r'[:;=8][-~oO]?[)(/|DPp]') def match_target(text: str) -> bool: # 包含emoji则命中 if emoji.emoji_count(text) > 0: return True # 包含颜文字则命中 if emoticon_re.search(text): return True return False # 执行筛选 filtered_df = df[df['sentence'].apply(match_target)].reset_index(drop=True)
- 运行结果
执行print(filtered_df)即可得到期望输出:
sentence 0 😎🤘🏾 1 +1😍😘 2 One :-) :)
补充:如果需要覆盖更多类型的颜文字(比如
^_^、T-T这类东亚风格颜文字),直接修改emoticon_re的正则规则,新增对应匹配模式即可。
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

