Python中如何基于一个CSV文件重写另一个CSV的匹配行
CSV合并实现方案
方法1:Python实现(跨平台,新手友好)
思路很简单:先把file1的内容按前两列做成映射表,再遍历file2的内容做匹配替换即可,不需要额外安装第三方库。
完整代码
import csv # 构建file1的映射字典:key为前两列的组合,value为file1的完整行内容 file1_map = {} with open("file1.csv", "r", encoding="utf-8") as f1: reader = csv.reader(f1) for row in reader: map_key = (row[0], row[1]) file1_map[map_key] = row # 遍历file2做匹配输出 with open("file2.csv", "r", encoding="utf-8") as f2, open("result.csv", "w", encoding="utf-8", newline="") as res: reader = csv.reader(f2) writer = csv.writer(res) for row in reader: current_key = (row[0], row[1]) # 匹配到就用file1的行,否则保留file2原行 writer.writerow(file1_map.get(current_key, row))
使用说明
把代码里的file1.csv、file2.csv换成你自己的文件实际路径,运行后生成的result.csv就是你需要的最终文件。
方法2:Awk命令实现(适合Linux/macOS用户,无需写代码)
直接在终端运行以下一行命令即可得到结果:
awk -F ',' 'NR==FNR{map[$1","$2]=$0;next} {print map[$1","$2] ? map[$1","$2] : $0}' file1.csv file2.csv > result.csv
内容的提问来源于stack exchange,提问作者Sam Stakol
相关产品推荐
相关产品推荐

