python怎么添加csv文件-如何通过Python在CSV文件的开头添加新列

使用csv模块的DictReader和DictWriter类会很容易.这是一个读取旧文件并在单个传递中写入新文件的示例.

DictReader实例将文件的每个逻辑行或行作为字典返回,其字符串是字段名称.您可以显式指定字段名称,也可以从文件的第一行读取它们,如示例所示.

您必须在创建DictWriter实例时指定所需的字段名称,并且字段名称的顺序定义它们将在输出文件的每一行上显示的顺序.在这种情况下,新的字段名称只是添加到输入文件的名称列表的开头 – 无论它们是什么.

import csv

with open("testdata.txt", "rb") as inf, open("testdata2.txt", "wb") as outf:

csvreader = csv.DictReader(inf)

fieldnames = ["Node"] + csvreader.fieldnames # add column name to beginning

csvwriter = csv.DictWriter(outf, fieldnames)

csvwriter.writeheader()

for node, row in enumerate(csvreader, 1):

csvwriter.writerow(dict(row, Node="node %s" % node))

如果这是输入文件的内容:

ID,Test Description,file-name,module,view,path1,path2

id 1,test 1 desc,test1file.txt,test1module,N,test1path1,test1path2

id 2,test 2 desc,test2file.txt,test2module,Y,test2path1,test2path2

id 3,test 3 desc,test3file.txt,test3module,Y,test3path1,test3path2

id 4,test 4 desc,test4file.txt,test4module,N,test4path1,test4path2

id 5,test 5 desc,test5file.txt,test5module,Y,test5path1,test5path2

这将是运行脚本后生成的输出文件的内容:

Node,ID,Test Description,file-name,module,view,path1,path2

node 1,id 1,test 1 desc,test1file.txt,test1module,N,test1path1,test1path2

node 2,id 2,test 2 desc,test2file.txt,test2module,Y,test2path1,test2path2

node 3,id 3,test 3 desc,test3file.txt,test3module,Y,test3path1,test3path2

node 4,id 4,test 4 desc,test4file.txt,test4module,N,test4path1,test4path2

node 5,id 5,test 5 desc,test5file.txt,test5module,Y,test5path1,test5path2

请注意,如果字段名称是有效的关键字参数(即有效的Python标识符)(如Node),则将字段的数据添加到具有dict(row,Node =’node%s’%node)的每一行中的数据仅起作用.

有效标识符仅由字母,数字和下划线组成,但不以数字或下划线开头,并且不能是语言关键字,如class,for,return,global,pass,print(在Python 2中)或raise.

为了解决这个限制,有必要单独进行:

for node, row in enumerate(csvreader, 1):

row["Invalid Keyword"] = "node %s" % node # add new field and value

csvwriter.writerow(row)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值