2

我很难理解如何将字典列表写入 csv,其中我的所有值都在单独的列中。SO上与此类似的问题并没有帮助我理解。我一直在使用 DictWriter 但无法弄清楚如何在没有错误“字段 x 不在字段名中”的情况下输入 dict.values()。

......

dicts = [
  {'sku': 'xxxx1', 'model': '1234-56K', 'price': '$xxx.xx', 'name': 'item_name_here', 'stock': 'True'},
  {'sku': 'xxxx2', 'model': '1234-56K', 'price': '$xxx.xx', 'name': 'item_name_here', 'stock': 'False'}
]

csv_file = open('file.csv','wb')
fieldnames = ('name', 'price', 'stock', 'model', 'sku')
csvwriter = csv.DictWriter(csv_file, fieldnames, extrasaction='raise', dialect='excel')
csvwriter.writeheader()
csvwriter.writerows(dicts)
return csv_file

......

这会在单个列中返回我的值,但是当我遍历列表中字典的值时,它只是将所有值(作为字符串)拆分为 's,t,r,i,n,g' 仍然将它们放入第一列。

4

2 回答 2

1

来自csv.DictWriter()的文档:

如果传递给 writerow() 方法的字典包含字段名中未找到的键,则可选的 extrasaction 参数指示要采取的操作。如果设置为“raise”,则会引发 ValueError。如果设置为“忽略”,则字典中的额外值将被忽略。

如果这是您遇到的错误,请尝试:
csv.DictWriter(csv_file, fieldnames, extrasaction='ignore', dialect='excel')

于 2013-10-03T20:13:12.433 回答
0

嘿,我是为 Python 2.7 写的

这个函数接受一个字典列表并输出一个 csv。它还包括在 fieldNames、defaultFieldValues、sortField 中设置字段顺序的选项,以及删除重复项的选项

https://gist.github.com/brendancol/6816393

def write_csv(outputRowDictionaries, outputFile, fieldNames=None, defaultFieldValue='', removeDuplicates=False, sortField=None):
....
于 2013-10-03T20:17:05.180 回答