如何使用Python的csv模块按ID匹配拼接两个CSV文件的对应字段
实现逻辑
先读取CSV B构建ID到Gender的映射字典,再遍历CSV A逐行匹配ID追加Gender字段,最后写入目标文件即可,全程只用Python内置csv模块,无需安装第三方依赖:
import csv # 构建ID-Gender映射字典 gender_mapping = {} with open("csv_b.csv", encoding="utf-8") as f: reader = csv.DictReader(f) # 清理字段名前后的多余空格 reader.fieldnames = [name.strip() for name in reader.fieldnames] for row in reader: id_val = row["ID"].strip() gender_val = row["Gender"].strip() gender_mapping[id_val] = gender_val # 处理CSV A并写入结果到CSV C with open("csv_a.csv", encoding="utf-8") as f_in, open("csv_c.csv", "w", encoding="utf-8", newline="") as f_out: reader = csv.DictReader(f_in) # 目标CSV表头为A的表头加Gender out_fields = reader.fieldnames + ["Gender"] writer = csv.DictWriter(f_out, fieldnames=out_fields) writer.writeheader() for row in reader: current_id = row["ID"].strip() # 匹配Gender,无匹配则留空避免报错 row["Gender"] = gender_mapping.get(current_id, "") writer.writerow(row)
注意事项
- 若你的CSV文件是GBK编码,将代码中所有
encoding="utf-8"改为encoding="gbk"即可 - 代码默认做了字段名、字段值的去空格处理,适配你示例中字段前后有多余空格的场景,若你的实际CSV无多余空格可删除所有
.strip() - Windows平台写入CSV加
newline=""是为了避免输出文件出现多余空行,Linux/macOS环境可省略该参数
内容的提问来源于stack exchange,提问作者pythonicwiz
相关产品推荐
相关产品推荐

