Python:有没有办法在调用writerow()之前更新DictWriter的键(列)?

时间:2015-06-08 07:04:03

标签: python list csv dictionary instantiation

csv.Dictwriter因此被实例化:

 class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

fieldsnames是一系列键,或者就我而言,是一个词典。

这是我的问题;在使用某个字典实例化DictWriter之后,我希望在调用fieldnames之前删除writerow()的一些键(以及扩展名,值)。由于我不打算进入的原因,我只能告诉代码在实例化 DictWriter之后移除的键。 Dict只有3种方法:

writerheader
writerow
writerows

..没有任何帮助。根据我的测试,似乎在实例化DictWriter时,它会根据fieldnames设置csv-to-be的列名。实例化后对fieldnames所做的任何更改都不会影响将生成的列标题。因为DictWriter在实例化时定义了列,我是否坚持使用这些列?或者有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

假设你有一个像 -

这样的词典
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

然后您可以按如下方式使用csv.writer:

f = open('abc.csv', 'wb')
csv_writer = csv.writer(f, dialect=csv.excel, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)

for row in rows:
    csv_writer.writerow([row['b'], row['c'])  # Assuming we dont want keys 'a' and 'b' to be written
f.close()