python csv dictwriter省略第一列

2024-06-25 23:04:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,只从CSV文件中选择特定的列。 我正在用DictWriter来做这个。 虽然它在大多数情况下都能正常工作,但有时却表现得很奇怪。 输出文件省略了输入中的第一列,即使我已将其包含在field names参数中。这种情况发生在特定的文件中,对于某些文件,我在输出的字段名中得到所有列,对于某些文件,它忽略了第一列。我是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

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

在这里以文本形式添加输入文件。在批准前的数据是标题,然后是CRLF,之后是数据记录。你知道吗

CardNumber,BookletNumber,Merchant_Name,Outlet,MERCHANTOUTLETCODE,MERCHANTOUTLETTYPE,ERPCODE,Region,Issuer,Employee_Number,Card_Holder,First_Name,Last_Name,Mobile,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,Notes,Approval_Code 999999999999,678,ABOF,ABOF-Corporate,,CORPORATE,,East Bangalore,ABOF,,,,,,06/06/2017,13:16:17,ABOF-02,v1,Pantaloons Gold-500,Retail Gift Cards,GIFT CARD REDEEM,-100.00,,0.00,6/6/2017 1:16:17 PM,Merchant not authorized to accept this card.,None,06/06/2017,,0.00,0.00,ONLINE,0.00,06/06/2017,,,,,,0.00,,107,,,,,Manual,2637061,0.00,{SENDERMOBILENUMBER~9999999999},


Tags: 文件csvnamenumbervalue情况cardamount