You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将输入CSV转换为指定表头的输出CSV?

解决CSV字段映射与数据筛选问题

要实现输入CSV字段到固定输出字段的映射,并只保留所需数据,只需在原代码基础上添加字段映射逻辑、修复语法错误即可,具体修改如下:

修改后的完整代码

import csv

# 定义输出字段到输入字段的映射关系
field_mapping = {
    'DIST_ID': 'DISTRIBUTION_ID',  # 示例:输入的DISTRIBUTION_ID对应输出的DIST_ID
    'FULLNAME': 'FULLNAME',        # 输入输出字段名一致时,直接写相同名称
    'LASTNAME': 'LAST_NAME',       # 可根据实际需求调整映射规则
    'ADDR1': 'ADDRESS_LINE_1'
}

# 固定输出字段名
out_fld_names = ['DIST_ID', 'FULLNAME', 'LASTNAME', 'ADDR1']

with open('file.csv', 'r', newline='') as infile, open('reordered.csv', 'w', newline='') as outfile:
    reader = csv.DictReader(infile)
    writer = csv.DictWriter(outfile, fieldnames=out_fld_names)
    
    # 写入输出表头
    writer.writeheader()
    
    for row in reader:
        # 根据映射关系构建输出行数据
        output_row = {}
        for out_field in out_fld_names:
            # 匹配对应输入字段,无对应字段时填充空字符串
            in_field = field_mapping.get(out_field, '')
            output_row[out_field] = row.get(in_field, '')
        
        # 写入处理后的行
        writer.writerow(output_row)

关键说明

  • 字段映射字典:field_mapping明确了输出字段与输入字段的对应关系,可根据实际输入CSV的字段名灵活调整。比如输入字段是DISTRIBUTION_ID,就映射到输出的DIST_ID;若输入输出字段名一致,直接保持键值相同即可。
  • 数据筛选逻辑:遍历每个输出字段,通过映射找到对应的输入字段,从原行数据中提取值;如果输入中没有对应字段,默认填充空字符串,避免运行报错。
  • 语法与模式修复:原代码中csv.DictWriter的参数名错误(应为fieldnames而非outFldNames),且存在多余的=符号,已修复;同时将输出文件打开模式从'a'(追加)改为'w'(写入),避免重复写入表头。

内容的提问来源于stack exchange,提问作者DenairPete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:46:05