本质上,我想在这里做的是以嵌套格式将CSV文件中的所有数据放入字典中,这样我就可以在需要时转储json。我需要格式化为[{"name":"Ollie","email":"josh@apple.com","phone":"0444444444","sizes":[],"taskAmount":1,"singleCheckout":true,"billingDifferent":false,"favorite":true
我有一个for循环,该循环应采用所有csv值并将它们以我的正确格式放入字典中。
我已经尝试查看我的循环,并且将其签出,所以我看不到为什么它不起作用。另外,在if状态下,如果我用new_data_dict[row[0]]
代替new_data_dict
,它可以正常运行,但不会以我想要的格式显示。
我的代码在这里
profiles = []
new_data_dict = {}
with open("test.csv", 'r') as data_file:
reader = csv.reader(data_file)
for row in reader:
if row[21] == 'null':
new_data_dict = {"name":row[0],"email":row[1],"phone":row[15],"sizes":[],"taskAmount":1,"singleCheckout":True,"billingDifferent":False,"favorite":False,"card":{"number":row[5],"expiryMonth":row[7],"expiryYear":row[8],"cvv":row[6]},}
else:
new_data_dict = {"name":row[0],"email":row[1],"phone":row[15],"sizes":[],"taskAmount":1,"singleCheckout":True,"billingDifferent":True,"favorite":False,"card":{"number":row[5],"expiryMonth":row[7],"expiryYear":row[8],"cvv":row[6]},"delivery":{"firstName":row[20],"lastName":row[21], }}
print(new_data_dict)
我的输入文件包含一些敏感信息,所以我无法真正显示它,但是代码使您对行中的内容有所了解。
我得到的是循环的一次迭代,它也恰好是csv中的最后一行数据,好像它是向后开始一样。
答案 0 :(得分:1)
当您从csv文件中读取行并在new_data_dict
循环中将它们分配到for
中时,您将反复覆盖已经存储在其中的行。
您可以将它们全部放入列表或其他词典中,例如:
all_records = []
for row in reader:
row_data_dict = {"name":row[0],"email":row[1],"phone":row[15],"sizes":[]...}
all_records.append(row_data_dict)
然后,输出将类似于您所描述的期望输出。