繁体   English   中英

将字典列表写到csv中,并在单独的列中添加值

[英]Write list of dicts to csv with values in separate columns

我很难理解如何将字典列表写入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

.....

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

csv.DictWriter()的文档中:

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

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

嘿,我是为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):
....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM