如何在CSV中的第一列之后插入列,然后使用单个值填充它?

时间:2017-01-25 16:33:44

标签: python-2.7 csv

我有一个CSV,其信息和格式类似于我在下面提供的信息作为示例:

FileType     clientid     cust_name     cust_num     cust_email
SL           137856       Jim Smith     A756         jim@aol.com
SL           137856       Paul Yung     H568         yungster@yahoo.com
SL           137856       Tim Jeffries  T478         timbo@gmail.com
SL           137856       Tom Reedy     N290         reddy76@gmail.com

我想在第一个列之后插入一个列,并用一个字符串填充它:

FileType    dealerid    clientid     cust_name     cust_num     cust_email
SL          RB6745      137856       Jim Smith     A756         jim@aol.com
SL          RB6745      137856       Paul Yung     H568         yungster@yahoo.com
SL          RB6745      137856       Tim Jeffries  T478         timbo@gmail.com
SL          RB6745      137856       Tom Reedy     N290         reddy76@gmail.com

我目前仍然坚持使用这段代码,我过去曾使用这段代码将一个列附加到csv文件的开头,我稍微对其进行了修改以尝试使其适用于我的目的:< / p>

with open(id_append_file_path, 'rb') as inf, open(append_file_path + 'new' + append_file_name, 'wb') as outf:
     reader = csv.DictReader(inf)
     fields = reader.fieldnames
     fields.insert(1, 'dealerid')
     writer = csv.DictWriter(outf, fields)
     writer.writeheader()
     for node, row in enumerate(reader, 1):
         row['dealerid'] = dealer_id
         writer.writerow(row)

但这些是我打开新CSV时看到的结果:

FileType    dealerid    clientid      cust_name     cust_num             cust_email
SL          RB6745      Jim Smith     A756          jim@aol.com
SL          RB6745      Paul Yung     H568          yungster@yahoo.com
SL          RB6745      Tim Jeffries  T478          timbo@gmail.com
SL          RB6745      Tom Reedy     N290          reddy76@gmail.com

我仍然相当陌生,所以也许我错过了一些东西。我使用的是Python 2.7.11。

1 个答案:

答案 0 :(得分:2)

您正在修改阅读器正在使用的fieldnames列表:

 fields = reader.fieldnames
 fields.insert(1, 'dealerid')

将其替换为fields = list(reader.fieldnames)fields = reader.fieldnames[:]或将要制作副本的内容,因此您不会改变原文。