如何用Python比对两个CSV文件并删除csv_2中无匹配的行
可行实现方案
1万行数据量级很小,以下3种方案都可以快速完成需求,按需选择即可:
方案1:Python实现(跨平台通用性最强)
逻辑简单易修改,不需要额外安装依赖,处理速度极快:
# 读取csv_1的所有合法ID存入集合,查询效率为O(1) with open("csv_1.csv", "r", encoding="utf-8") as f: valid_ids = {line.strip() for line in f if line.strip()} # 遍历csv_2过滤符合条件的行 result = [] with open("csv_2.csv", "r", encoding="utf-8") as f: for line in f: line = line.strip() if not line: continue current_id = line.split(";")[0].strip() if current_id in valid_ids: result.append(line) # 输出过滤后的结果到新文件 with open("filtered_csv_2.csv", "w", encoding="utf-8") as f: f.write("\n".join(result))
方案2:Linux/macOS 终端命令实现(无需写代码,一行完成)
直接用系统自带的awk工具处理:
awk -F ';' 'NR==FNR{id_set[$0];next} $1 in id_set' csv_1.csv csv_2.csv > filtered_csv_2.csv
命令逻辑说明:
-F ';'指定csv_2的字段分隔符为分号NR==FNR{id_set[$0];next}读取第一个文件csv_1,把所有行内容存入集合$1 in id_set处理csv_2时判断第一列是否在集合内,符合条件就自动输出
方案3:Excel/WPS 可视化操作(适合无代码基础用户)
操作步骤:
- 把csv_1的所有内容复制到表格的A列,再导入csv_2到同表格的C、D列(导入时指定分隔符为分号,自动拆分两列)
- 在E列第一行输入公式
=COUNTIF(A:A,C1),下拉填充所有行 - 筛选E列数值为1的行,复制筛选结果保存为新的csv文件即可
注意:如果你的csv文件包含表头,处理前需要先跳过第一行,避免把表头当做ID匹配。
内容的提问来源于stack exchange,提问作者iulianpn
相关产品推荐
相关产品推荐

