编辑:
在2.7 /
3.2中,有一个新
writeheader()方法。同样,John
Machin的答案提供了一种更简单的写标题行的方法。现在使用2.7 / 3.2中提供
的
writeheader()方法的简单示例:
from collections import OrderedDictordered_fieldnames = OrderedDict([('field1',None),('field2',None)])with open(outfile,'wb') as fou: dw = csv.DictWriter(fou, delimiter='t', fieldnames=ordered_fieldnames) dw.writeheader() # continue on to write data实例化DictWriter需要一个fieldnames参数。
从文档中:
fieldnames参数标识传递给writerow()方法的字典中的值写入csvfile的顺序。
换句话说,Fieldnames参数是必需的,因为Python字典本质上是无序的。
以下是如何将标头和数据写入文件的示例。
注意:
with声明是在2.6中添加的。如果使用2.5:
from __future__ import with_statement
with open(infile,'rb') as fin: dr = csv.DictReader(fin, delimiter='t')# dr.fieldnames contains values from first row of `f`.with open(outfile,'wb') as fou: dw = csv.DictWriter(fou, delimiter='t', fieldnames=dr.fieldnames) headers = {} for n in dw.fieldnames: headers[n] = n dw.writerow(headers) for row in dr: dw.writerow(row)正如@FM在评论中提到的,您可以将标头编写压缩为单行代码,例如:
with open(outfile,'wb') as fou: dw = csv.DictWriter(fou, delimiter='t', fieldnames=dr.fieldnames) dw.writerow(dict((fn,fn) for fn in dr.fieldnames)) for row in dr: dw.writerow(row)



