pandas数据集清洗:删除非阿拉伯语内容及符号,解决清洗不生效问题
你之前的代码没有达到预期效果,核心原因是你只做了内容替换,没有把替换后完全为空的行过滤掉,同时多轮replace规则容易出现遗漏或者冲突。直接通过阿拉伯语的Unicode编码范围匹配提取内容,是最简单高效的方案,完全符合你的需求。
阿拉伯语的主Unicode范围是\u0600-\u06FF,补充字符范围是\u0750-\u077F,我们直接匹配这个区间的字符即可,具体实现代码如下:
import pandas as pd import re # 读取原始数据集 lexicon = pd.read_csv(r"C:\Users\User\Python Code\data.csv") # 编译阿拉伯语匹配正则,同时保留词间空格 arabic_re = re.compile(r'[\u0600-\u06FF\u0750-\u077F\s]+') # 提取每行中的阿拉伯语内容,自动剔除所有其他语言、符号、特殊标记 def get_arabic_only(text): # 匹配所有阿拉伯语片段,拼接后去除首尾多余空格 arabic_part = ''.join(arabic_re.findall(str(text))).strip() return arabic_part lexicon['clean_tweet'] = lexicon['Vocabulary'].apply(get_arabic_only) # 过滤掉完全没有阿拉伯语内容的空行,仅保留有阿拉伯语的条目 lexicon = lexicon[lexicon['clean_tweet'] != ''].reset_index(drop=True) # 输出清洗后的结果 print(lexicon.head(10))
这个方法的处理逻辑完全匹配你的要求:
- 如果一行只有符号、英文、特殊标记(比如[PAD]、!、#这类),提取后结果为空,会被直接删掉
- 如果一行同时包含阿拉伯语和其他内容,只会保留阿拉伯语部分,其他内容全部自动删除
内容的提问来源于stack exchange,提问作者Bashar
相关产品推荐
相关产品推荐

