gpt4 book ai didi

python - 如何用 csv.DictWriter 写标题行?

转载 作者:IT老高 更新时间:2023-10-28 21:07:33 24 4
gpt4 key购买 nike

假设我有一个 csv.DictReader 对象,我想把它写成 CSV 文件。我该怎么做?

我知道我可以像这样编写数据行:

dr = csv.DictReader(open(f), delimiter='\t')
# process my dr object
# ...
# write out object
output = csv.DictWriter(open(f2, 'w'), delimiter='\t')
for item in dr:
output.writerow(item)

但是我怎样才能包含字段名呢?

最佳答案

编辑:
在 2.7/3.2 中有 a new writeheader() method .此外,John Machin 的回答提供了一种更简单的方法来编写标题行。
使用 writeheader() 方法的简单示例现在在 2.7/3.2 中可用:

from collections import OrderedDict
ordered_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 需要一个字段名参数。
来自 the documentation :

The fieldnames parameter identifies the order in which values in the dictionary passed to the writerow() method are written to the csvfile.

换一种说法:Fieldnames 参数是必需的,因为 Python 字典本质上是无序的。
下面是如何将 header 和数据写入文件的示例。
注意: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)

关于python - 如何用 csv.DictWriter 写标题行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2982023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com