我有一个元组列表,我正试图找出如何创建一个csv文件,其中键作为列标题,值作为列值。在
下面是元组的示例列表:
[('d_conversion_rate', 1), ('prev_2wk_visit_count', 0.0), ('sku_id', '100088-01'), ('prev_1wk_uniq_purch_cnt', 0.0)]
[('d_conversion_rate', 0), ('prev_2wk_visit_count', 6.0), ('sku_id', '100088-02'), ('prev_1wk_uniq_purch_cnt', 0.0)]
[('d_conversion_rate', 5), ('prev_2wk_visit_count', 7.0), ('sku_id', '100088-03'), ('prev_1wk_uniq_purch_cnt', 0.0)]
预期的csv文件应具有:
^{pr2}$这是我写的代码:
import os
import sys
import csv
import string
import random
def import_data_to_csv(dict_d):
with open('C:/Reports/SI_Reconciliation_Reporting/2015/output/2015-04-19/test_dump.csv', 'w') as outfile:
fp = csv.DictWriter(outfile, dict_d[0].keys())
fp.writeheader()
fp.writerows(dict_d)
for row in sku_weekL:
#print row.items()
for key, value in row.items():
sku_weekTemp.append((key, value))
print sku_weekTemp
#print sku_weekL
#print sku_weekL
#print dir(sku_weekL)
import_data_to_csv(sku_weekTemp)
但是运行脚本时,我得到一个错误:tuple对象没有属性键。在
有什么办法解决这个问题吗?在
根据我对你问题的理解,这里有一个解决方案。 如果有任何问题可以问。我个人不喜欢python标准库
csv
,在需要编写csv文件时,总是没有它。在错误试图告诉您
dict_d[0]
是一个元组对象,因此没有keys()
方法(只有dict有这个方法)。在首先,您应该按您的首选顺序列出列名:
由于行已经是具有这些键的dict,所以不需要转换它们。在
当您有了所有的value\u行时,您可以将它与列名称一起使用来编写它:
^{pr2}$编辑:我没注意到你用的是DictWriter,所以把dicts转换成列表是不必要的
edit2:示例:
给
val_rows
这样你可以像这样使用上面的函数
如果您的数据没有格式化为dict列表,那么您必须进行转换。从上面的问题中获取元组列表,我们可以将其转换为如下所示的dict列表
希望现在一切都清楚了。在
编辑3: 你在评论里写的东西漏掉了一些信息,所以我得猜测一下
您不希望每个字典都有一个新列表,所以我将从循环中拉出列表实例化。
pprint
的目的是在没有循环的情况下使用它,因此您可以看到整个过程。在我很确定你的数据实际上只是一个记录列表,每个记录都有固定位置的数据。如果是这种情况,你可以简化很多:
相关问题 更多 >
编程相关推荐