如何使用 python 将 json 中的多个字符串数组转换为 csv?
How do you convert a multiple arrays of string inside json into csv using python?
如何使用 python 将多个数组的嵌套 json 转换为 csv 表格结构?
查看完整的 json here
代码:
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']])
以上代码的实际输出:
filter,cost,value,cost,subvalue,cost,res_id,cost,tot_cost,metdata
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,i-048e0bfa74ac9cf78,25.047,25.801000000000002,{u'name': u'BizOps0424001'}
tags,5517.734,Name,462.62,,70.358,i-048e0bfa74ac9cf78,25.047,25.801000000000002,{u'name':
u'BizOps0424001'}
tags,5517.734,Name,462.62,BizOps01,60.188,i-048e0bfa74ac9cf78,25.047,25.801000000000002,{u'name':
u'BizOps0424001'}...
它一次又一次地重复元数据的值,并在 wards 之后重复 NAME。
如何根据计数只打印一次值和不同的值。
查看完整的 csv 文件here
TOTALLY EDITED CODE AFTER ANKUSH's HELP:
import json
import csv
f = open('cost_drilldown_data.json')
data = json.load(f)
s=csv.writer(open('googletry1.csv','w'))
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
s.writerow(["filter_list","filter_cost_list","value_list","cost_list","subValue_list","subvalueCost_list","resID_list","storageCost_list","totalCost_list","metadata_list"])
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'])
#s.writerow([breakdown['filter'],breakdown["cost"],values['value'],values['cost'],
#subvalues["subvalue"],subvalues["cost"],storage['resource_id'],storage['cost'],
#storage['total_cost'],storage['metadata'],storage['volume_cost'],storage['provider']])
s.writerow([eachBreakdown['filter'],eachBreakdown['cost'],eachValues['value'],eachValues['cost'],
eachSubValueArr['subvalue'],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']])
s.writerow([eachStorage['resource_id']])
now i am getting challenge in printing the resource id to the side of the subvalue cost: I am getting csv file as :
enter code here
你发的问题不太清楚,虽然我已经试着理解了。在您正在处理的 json 中,对象的结构不规则。我的意思是,每个关键元素的 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']])
如何使用 python 将多个数组的嵌套 json 转换为 csv 表格结构? 查看完整的 json here
代码:
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']])
以上代码的实际输出:
filter,cost,value,cost,subvalue,cost,res_id,cost,tot_cost,metdata
tags,5517.734,Name,462.62,BizOps-VM-20,227.576,i-048e0bfa74ac9cf78,25.047,25.801000000000002,{u'name': u'BizOps0424001'}
tags,5517.734,Name,462.62,,70.358,i-048e0bfa74ac9cf78,25.047,25.801000000000002,{u'name': u'BizOps0424001'}
tags,5517.734,Name,462.62,BizOps01,60.188,i-048e0bfa74ac9cf78,25.047,25.801000000000002,{u'name': u'BizOps0424001'}...
它一次又一次地重复元数据的值,并在 wards 之后重复 NAME。
如何根据计数只打印一次值和不同的值。
查看完整的 csv 文件here
TOTALLY EDITED CODE AFTER ANKUSH's HELP:
import json
import csv
f = open('cost_drilldown_data.json')
data = json.load(f)
s=csv.writer(open('googletry1.csv','w'))
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
s.writerow(["filter_list","filter_cost_list","value_list","cost_list","subValue_list","subvalueCost_list","resID_list","storageCost_list","totalCost_list","metadata_list"])
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'])
#s.writerow([breakdown['filter'],breakdown["cost"],values['value'],values['cost'],
#subvalues["subvalue"],subvalues["cost"],storage['resource_id'],storage['cost'],
#storage['total_cost'],storage['metadata'],storage['volume_cost'],storage['provider']])
s.writerow([eachBreakdown['filter'],eachBreakdown['cost'],eachValues['value'],eachValues['cost'],
eachSubValueArr['subvalue'],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']])
s.writerow([eachStorage['resource_id']])
now i am getting challenge in printing the resource id to the side of the subvalue cost: I am getting csv file as :
enter code here
你发的问题不太清楚,虽然我已经试着理解了。在您正在处理的 json 中,对象的结构不规则。我的意思是,每个关键元素的 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']])