如何在Pandas DataFrame中移除表情及中英外的其他语言字符
pandas清洗文本字段:保留中英文、移除表情及其他语种字符
你之前用的正则[^\x00-\x7F]+逻辑是剔除所有非ASCII编码字符,而中文不属于ASCII编码范围,所以会被一并误删。调整正则匹配范围,只保留你需要的中、英文字符及必要的空格、常用标点,剩下的表情、泰文等其他语种字符、特殊装饰符号会被全部清除。
实现代码
# 正则规则:保留范围包含简繁体中文、英文字母、数字、空格、常用英文标点 # 如果需要保留额外的中英文标点,直接在下方中括号内追加对应字符即可 clean_pattern = r'[^\u4e00-\u9fa5a-zA-Z0-9\s.,!?;:\'\"()-]+' # 替换对应字段内容,按你实际的列名调整即可,示例对应你提到的Post Title/Post Detail字段 df1['Post Title'] = df1['Post Title'].str.replace(clean_pattern, '', regex=True).str.strip() df1['Post Detail'] = df1['Post Detail'].str.replace(clean_pattern, '', regex=True).str.strip() # 可选操作:清除字符后可能残留连续空格,统一替换为单个空格 df1['Post Title'] = df1['Post Title'].str.replace(r'\s+', ' ', regex=True) df1['Post Detail'] = df1['Post Detail'].str.replace(r'\s+', ' ', regex=True)
效果验证
用你给出的样例数据跑上述代码,输出结果完全匹配预期:
| Title | Content |
|---|---|
| 補水法 | Skin Care |
| 現貨 | Test |
说明:规则里的
\u4e00-\u9fa5是Unicode里的中日韩统一表意文字区间,覆盖所有简体、繁体中文字符;emoji、泰文、阿拉伯文等其他语种字符、特殊装饰符号都不在保留范围内,会被自动剔除。
内容的提问来源于stack exchange,提问作者Crazy
相关产品推荐
相关产品推荐

