代码之家  ›  专栏  ›  技术社区  ›  Tim

如何将CSV数据写入字典(或更好的处理方法)

  •  0
  • Tim  · 技术社区  · 1 年前

    我正试图将CSV文件中的数据写入python词典。我可以访问我需要的数据,但我对如何输入字典一无所知。这些数据最终将被重新写入一个新的CSV文件,以便导入到不同的系统中。

    在下面的代码中,您将看到最终的目标CSV文件有两组头。它们是先用writerow()编写的。每次测试运行脚本时,相关的行都会被注释掉,以避免编写它们。

    中的打印语句 with open(bccsv, newline='') as csvfile: 取消注释时所有工作。

    testdict.update("sonum": row['Order ID']) 是我试图写入第一个密钥对,但它在冒号处引发语法错误。

    import csv
    
    bccsv = "order.csv"
    fbcsv = "fbcsv.csv"
    testdict = {"ordertype": "SO"}
    #header1 = ["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"]
    #header2 = ["Flag","SOItemTypeID","ProductNumber","ProductDescription","ProductQuantity","UOM","ProductPrice","Taxable","TaxCode","Note","ItemQuickBooksClassName","ItemDateScheduled","ShowItem","KitItem","RevisionLevel","CustomerPartNumber"]
    
    #write first header row to CSV
    #with open(fbcsv, "w", newline="") as csvfile:
        #wr = csv.writer(csvfile)
        #wr.writerow(header1)
    
    #write second header row to CSV
    #with open(fbcsv, "a", newline="") as csvfile:
        #wr = csv.writer(csvfile)
        #wr.writerow(header2)
    
    
    #PRINT WORKING - .update does not work
    with open(bccsv, newline='') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            testdict.update("sonum": row['Order ID'])
            #print(row['Order ID'])
            #print(row['Billing Company'])
            #print(row['Customer Email'])
            #print(row['Customer Phone'])
            #print(row['Order Date'])
            #print(row['Ship Method'])
            #print(row['Billing Street 1'])
            #print(row['Billing Suburb'])
            #print(row['Billing State'])
            #print(row['Billing Zip'])
            #print(row['Billing Country'])
            #print(row['Billing Location Group'])
            #print(row['Billing koi_rep'])
            #print(row['Product Details'])
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   richard    1 年前

    词典 .update 需要一本字典,你的大括号不见了 testdict.update("sonum": row['Order ID']) .

    import csv
    
    
    csv_file = """\
    Order ID,Total
    X123456,420.69
    """
    
    testdict = {"ordertype": "SO"}
    
    data = list(csv.DictReader(csv_file.splitlines()))
    
    print(data) # [{'Order ID': 'X123456', 'Total': '420.69'}]
    
    for row in data:
        testdict.update({"sonum": row["Order ID"]})
        # or
        testdict["total"] = row["Total"]
    
    print(testdict) # {'ordertype': 'SO', 'sonum': 'X123456', 'total': '420.69'}