如何使用python将json中的多个字符串数组转换为csv?
如何使用python将多个数组的嵌套json转换为csv表格结构? 请参阅完整的json 代码:如何使用python将json中的多个字符串数组转换为csv?,python,json,csv,data-science,Python,Json,Csv,Data Science,如何使用python将多个数组的嵌套json转换为csv表格结构? 请参阅完整的json 代码: import json import csv f = open('cost_drilldown_data.json') data = json.load(f) s=csv.writer(open('costdrillwittime_storage4.csv','w')) s.writerow(["filter","cost","value","cost","subvalue","cost","r
import json
import csv
f = open('cost_drilldown_data.json')
data = json.load(f)
s=csv.writer(open('costdrillwittime_storage4.csv','w'))
s.writerow(["filter","cost","value","cost","subvalue","cost","res_id","cost","tot_cost","metdata"])
i=0
d = []
for breakdown in data['breakdown']:
#for time in data['time']:
for storage in data['storage']:
if storage not in d:
for values in breakdown['values']:
if 'subvalues' in values:
for subvalues in values['subvalues']:
#for i in range(0,len(data)):
s.writerow([breakdown['filter'],breakdown["cost"],values['value'],values['cost'],
subvalues["subvalue"],subvalues["cost"],storage['resource_id'],storage['cost'],
storage['total_cost'],storage['metadata']])
else :
s.writerow([breakdown['filter'],"","",values['value'],values['cost']])
上述代码的实际输出:
过滤器,成本,价值,成本,子价值,成本,资源id,成本,总成本,metdata
标签,5517.734,名称,462.62,BizOps-VM-20227.576,i-048e0bfa74ac9cf78,25.047,25.8010000000002,{u'Name':u'BizOps0424001'}
标签,5517.734,姓名,462.62,,70.358,i-048e0bfa74ac9cf78,25.047,25.8010000000002,{u'Name':
u'BizOps0424001'}
标签,5517.734,名称,462.62,BizOps01,60.188,i-048e0bfa74ac9cf78,25.047,25.8010000000002,{u'Name':
u'BizOps0424001'}
它一次又一次地重复元数据的值,并且在wards后面重复名称
如何使值只打印一次,并根据计数仅打印不同的值
查看完整的csv文件
在ANKUSH的帮助下完全编辑代码:
你贴的问题不清楚,尽管我试着去理解它。在您正在处理的对象中,对象的结构是不规则的。我的意思是,json中的每个关键元素的对象数量并不相同。您也从来没有提到在数据丢失的情况下您到底想要什么 找到下面的代码。我已设法获得列表中所有列的值。你可以把它们打印出来看看。很乐意帮忙
import json
f = open('cost_drilldown_data.json')
data = json.load(f)
breakdown = data['breakdown']
storage = data['storage']
filter_list = [] #first column
filter_cost_list = [] #second column
value_list = [] #third column
cost_list = [] #fourth column
subValue_list = [] #fifth col
subvalueCost_list = [] #sixth col
resID_list = [] #seventh col
storageCost_list = [] #eighth col
totalCost_list = [] #ninth col
metadata_list = [] #tenth col
for eachBreakdown in breakdown:
filter_list.append(eachBreakdown['filter'])
filter_cost_list.append(['cost'])
valuesArr = eachBreakdown['values']
for eachValues in valuesArr:
value_list.append(eachValues['value'])
cost_list.append(eachValues['cost'])
if 'subvalues' in eachValues:
subValueArr = eachValues['subvalues']
for eachSubValueArr in subValueArr:
subValue_list.append(eachSubValueArr['subvalue'])
subvalueCost_list.append(eachSubValueArr['cost'])
for eachStorage in storage:
resID_list.append(eachStorage['resource_id'])
storageCost_list.append(eachStorage['cost'])
totalCost_list.append(eachStorage['total_cost'])
metadata_list.append([eachStorage['metadata']])
你能举例说明吗。你提到的数据包含10个元素。不确定你说的是哪一个。@AnkushRathi,请找到python代码,请更正代码。当你打开链接时,你会找到文件,请下载它,看你的循环是错误的,这就是为什么你在输出中得到相同的标签、成本等值。你能解释一下你到底想要输出什么吗?@AnkushRathi,是的,如何修改循环,将解释我在csv中需要什么:我需要一些特定的数据,比如json多数组中的值及其成本。例如:过滤成本“值”、“成本”、“子值”、“成本”、“资源id”、“成本”、“总成本”、“metdata”标签5877。。。问题是数据的元素数不相等。我的意思是,
breakdow
中有14个元素,breakdow[values]
中有26个左右。只有你解释清楚了,我才能帮你。谢谢你的努力,这真的帮了我很多,但现在我面临一个挑战,就像你提到的,当我使用writerows时,它会向下打印,而不是向每个存储列的侧面打印。我如何使用代码交替打印@,,请参阅在csv中编辑的用于打印的代码如何使打印资源id并行现在我通过在s.writerow.ie之后的第一个for循环结束之前传递存储for循环来并行打印。但是我必须明白为什么它会被重复。你能告诉我如何停止打印重复的资源id值及其成本吗。将粘贴Meth的csv输出此线程无缘无故运行时间过长…请在此处发送邮件给我-rathiankush123@gmail.com
import json
f = open('cost_drilldown_data.json')
data = json.load(f)
breakdown = data['breakdown']
storage = data['storage']
filter_list = [] #first column
filter_cost_list = [] #second column
value_list = [] #third column
cost_list = [] #fourth column
subValue_list = [] #fifth col
subvalueCost_list = [] #sixth col
resID_list = [] #seventh col
storageCost_list = [] #eighth col
totalCost_list = [] #ninth col
metadata_list = [] #tenth col
for eachBreakdown in breakdown:
filter_list.append(eachBreakdown['filter'])
filter_cost_list.append(['cost'])
valuesArr = eachBreakdown['values']
for eachValues in valuesArr:
value_list.append(eachValues['value'])
cost_list.append(eachValues['cost'])
if 'subvalues' in eachValues:
subValueArr = eachValues['subvalues']
for eachSubValueArr in subValueArr:
subValue_list.append(eachSubValueArr['subvalue'])
subvalueCost_list.append(eachSubValueArr['cost'])
for eachStorage in storage:
resID_list.append(eachStorage['resource_id'])
storageCost_list.append(eachStorage['cost'])
totalCost_list.append(eachStorage['total_cost'])
metadata_list.append([eachStorage['metadata']])