如何从Pandas DataFrame列中移除未知Unicode字符并保留中英文字符?
解决方法
你的问题出在错误理解了特殊字符的本质:\u3000、\uf505是实际存在的Unicode字符,不是字符串里的\转义符号,所以用df[~df['A'].str.contains(r'\\')]根本匹配不到目标,反而会错误过滤行。
要保留中文、英文(以及你需要的全角空格),同时移除所有其他未知特殊Unicode字符,直接用str.replace配合正则表达式即可:
import pandas as pd data = {'A': ['公司\u3000', 'aaaa\uf505'], 'B': ['1', '2']} df = pd.DataFrame(data) # 仅保留中文、英文、全角空格,其余特殊字符全部移除 df['A'] = df['A'].str.replace(r'[^\u4e00-\u9fa5a-zA-Z\u3000]', '', regex=True) print(df)
执行后输出就是你要的结果:
A B 0 公司 1 1 aaaa 2
如果还需要保留其他类型字符(比如数字、半角空格),只需把对应字符加入正则的允许集合中,例如要保留数字和半角空格,正则改为:
r'[^\u4e00-\u9fa5a-zA-Z0-9\u3000 ]'
内容的提问来源于stack exchange,提问作者Lara19
相关产品推荐
相关产品推荐

