Python: 有没有办法在调用 writerow() 之前更新 DictWriter 的键(列)?
Python: Is there a way to update the keys (columns) of a DictWriter before calling writerow()?
csv.Dictwriter 是这样实例化的:
class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
fieldsnames
是一个键序列,或者在我的例子中是一个字典。
这是我的问题;在用某个字典实例化 DictWriter 之后,我希望在调用 writerow()
之前删除 fieldnames
的一些键(以及扩展的值)。由于我不会深入的原因,我只能告诉代码在 DictWriter
实例化后删除哪些键。 Dict 只有 3 个方法:
writerheader
writerow
writerows
.. none 其中有任何帮助。根据我的测试,似乎在 DictWriter
被实例化时,它根据 fieldnames
设置了 csv-to-be 的列名。实例化后对 fieldnames
所做的任何更改都不会影响将生成的列 headers。因为 DictWriter 在实例化时定义了列,所以我坚持使用这些列吗?或者有解决办法吗?
假设你有一个像这样的字典 -
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()
csv.Dictwriter 是这样实例化的:
class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
fieldsnames
是一个键序列,或者在我的例子中是一个字典。
这是我的问题;在用某个字典实例化 DictWriter 之后,我希望在调用 writerow()
之前删除 fieldnames
的一些键(以及扩展的值)。由于我不会深入的原因,我只能告诉代码在 DictWriter
实例化后删除哪些键。 Dict 只有 3 个方法:
writerheader
writerow
writerows
.. none 其中有任何帮助。根据我的测试,似乎在 DictWriter
被实例化时,它根据 fieldnames
设置了 csv-to-be 的列名。实例化后对 fieldnames
所做的任何更改都不会影响将生成的列 headers。因为 DictWriter 在实例化时定义了列,所以我坚持使用这些列吗?或者有解决办法吗?
假设你有一个像这样的字典 -
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()