python csv dictwriter省略了第一列

时间:2018-01-11 15:47:33

标签: python csv

我有一个python脚本,只能从CSV文件中选择特定的列。 我正在使用DictWriter来做到这一点。 虽然它适用于大多数场合,但它有时表现得很奇怪。 输出文件省略了输入中的第一列,即使我已将其包含在字段名称参数中。这种情况发生在特定文件中,对于某些文件,我得到输出中字段名称中提到的所有列,有些文件省略了第一列。我是python的新手并且一无所知为什么它有时会省略第一列。 我尝试在写入之前打印记录,然后在那里看到有值的列,但输出文件中缺少该列。

with open("F:\\TESTpy\\testin2.csv","rt",encoding='utf-8') as infile, open("F:\\TESTpy\\out.csv", "w", newline="",encoding='utf-8') as outfile:
    r = csv.DictReader(infile,delimiter=',')
    w = csv.DictWriter(outfile, fieldnames=['CardNumber'],extrasaction="ignore")
    w.writeheader()
    for row in r:
        print ('rrrrrr')
        print(row)
        w.writerow(row)

这是我的输入文件的样子

Here is what my input file looks like

这是我的输出,cardnumber是空白的。 This is my output, cardnumber is blank.

以文本形式在此处添加输入文件。数据直到Approval_Code是标题然后有一个CRLF,之后是数据记录。

  

CardNumber,BookletNumber,MERCHANT_NAME,插座,MERCHANTOUTLETCODE,MERCHANTOUTLETTYPE,ERPCODE,大区,发行人,EMPLOYEE_NUMBER,Card_Holder,名字,姓氏,移动,TRANSACTION_DATE,Transaction_Time,Pos_Name,Initiated_By,Program_Group,CARDPROGRAMGROUPTYPENAME,TRANSACTION_TYPE,Amount_Rs,Bill_Amount,Stored_Value_RsPoints ,INVOICE_NUMBER,Response_Message,Reason_of_Cancel,DATEATCLIENT,PARENTCARDNUMBER,Pre_Transaction_Card_Balance,Expired_Value_RsPoints,TRANSACTION_MODE,Adjustment_amount_Rs,Transaction_PostDate,Currency_Symbol_for_converted_Amount,MERCHANTCURRENCYCODE,Upgraded_Program_group,Currency_Converted_Amount,Tier_upgraded_On,Card_Balance_RsPoints,EXPIRY_DATE,REFERENCE_NUMBER,Promotional_Value_RsPoints,Original_CardNumber_Before_Reissue,Promotional_Details,Corporate_Name,Card_Entry_Mode,Batch_Number,Request_Amount_Rs ,注意事项,Approval_Code   999999999999,678,ABOF,ABOF-企业,, CORPORATE ,,东   班加罗尔,ABOF ,,,,,, 06/06 / 2017,13:16:17,ABOF-02,V1,长裤   Gold-500,零售礼品卡,GIFT CARD REDEEM,-100.00 ,, 0.00,6 / 6/2017   下午1:16:17,商家无权接受此事   卡,无,06/06/2017,0.00,0.00,ONLINE 0.00,06 / 06/2017 ,,,,,, 0.00,,107 ,,,,,手册,2637061,0.00,{SENDERMOBILENUMBER〜9999999999 },

0 个答案:

没有答案