我很难理解如何将一个dicts列表写入csv,其中所有值都在不同的列中。 SO上与此类似的问题并没有帮助我理解。我一直在使用DictWriter,但无法弄清楚如何在没有错误'field x而不是fieldnames'的情况下输入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
.....
这会在单个列中返回我的值,但是当我迭代列表中的dicts的值时,它只是将所有值(作为字符串)拆分为's,t,r,i,n,g,'仍然将它们放入第一列。
答案 0 :(得分:1)
来自csv.DictWriter()的文档:
如果传递给writerow()方法的字典包含在字段名中找不到的键,则可选的extrasaction参数指示要采取的操作。如果将其设置为“raise”,则会引发ValueError。如果将其设置为“ignore”,则忽略字典中的额外值。
如果这是你得到的错误,请尝试:
csv.DictWriter(csv_file, fieldnames, extrasaction='ignore', dialect='excel')
答案 1 :(得分: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):
....