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

如何将CSV数据写入Python字典?求更优处理方案

问题解决:CSV数据存入字典并写入新CSV

1. 语法错误的原因与修复

你用testdict.update("sonum": row['Order ID'])报错,是因为update()方法要求传入字典对象,而非直接写键值对语法。有两种简洁的修复方式:

  • 方式一:传入字典字面量调用update
    testdict.update({"sonum": row['Order ID']})
    
  • 方式二:直接给字典键赋值(单个键值对更新时更高效)
    testdict['sonum'] = row['Order ID']
    

2. 适配业务场景的完整代码修改

注意:你当前的testdict是全局变量,循环处理每一行时会覆盖之前的数据。如果要保留所有行的处理结果,应该为每行创建独立字典并存入列表,之后批量写入新CSV。以下是完整修改后的代码:

import csv

bccsv = "order.csv"
fbcsv = "fbcsv.csv"
# 直接复用你定义的目标表头
target_headers = ["Flag","SONum","Status","CustomerName","CustomerContact","BillToName","BillToAddress","BillToCity","BillToState","BillToZip","BillToCountry","ShipToName","ShipToAddress","ShipToCity","ShipToState","ShipToZip","ShipToCountry","ShipToResidential","CarrierName","TaxRateName","PriorityId","PONum","VendorPONum","Date","Salesman","ShippingTerms","PaymentTerms","FOB","Note","QuickBooksClassName","LocationGroupName","OrderDateScheduled","URL","CarrierService","DateExpired","Phone,Email","Category","CF-Credit Key Approval ID","CarrierName","CF-Skynamo Comments"]

# 存储所有处理后的订单字典
order_dicts = []

with open(bccsv, newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        # 为每行创建独立字典,初始化固定值
        order_dict = {"ordertype": "SO", "SONum": row['Order ID']}
        # 按需映射其他字段
        order_dict["CustomerName"] = row['Billing Company']
        order_dict["CustomerContact"] = f"{row['Customer Phone']} | {row['Customer Email']}"
        order_dict["BillToName"] = row['Billing Company']
        order_dict["BillToAddress"] = row['Billing Street 1']
        order_dict["BillToCity"] = row['Billing Suburb']
        order_dict["BillToState"] = row['Billing State']
        order_dict["BillToZip"] = row['Billing Zip']
        order_dict["BillToCountry"] = row['Billing Country']
        order_dict["Salesman"] = row['Billing koi_rep']
        order_dict["LocationGroupName"] = row['Billing Location Group']
        # 将当前行字典存入列表
        order_dicts.append(order_dict)

# 写入处理后的数据到新CSV
with open(fbcsv, "w", newline="") as csvfile:
    # 使用DictWriter按指定表头写入,自动匹配字典键值
    writer = csv.DictWriter(csvfile, fieldnames=target_headers)
    writer.writeheader()
    writer.writerows(order_dicts)

3. 关键说明

  • 使用DictWriter可以直接按表头映射字典键值,无需手动维护列顺序,完美适配你的系统导入需求。
  • 如果需要处理第二行的商品明细表头,可以拆分Product Details字段的内容,生成对应明细字典后单独追加写入新CSV。
  • 循环中为每行创建新字典,避免了全局字典的数据覆盖问题,保证所有行的处理结果都被保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:35:23