转换一个json到csv。 (有点乏味)

所以我已经试过这个脚本,这使得我的方式变得更加困难,我想写出更简单的资金细节,比如每年一行(或者其他任何一种好的方式来expression它)

import csv import json json_data = [{"Founded": "2004", "Company": "InsideSales.com","Funding": "$201.2M", "Funding Details": [[" 2015", "$60.65M "], [" 2014", "$100M "], [" 2013", "$36.55M "], [" 2012", "$4M "]]}] f = csv.writer(open("CRUNCHBASEDATA.csv", "wb+")) f.writerow(['Founded','Company','Funding','Funding Details']) for obj in indata: f.writerow([obj['Founded'],obj['Company'],obj['Funding'],obj['Funding Details']]) 

这给了我一个像资金细节excel列

 [[u' 2015', u'$60.65M '], [u' 2014', u'$100M '], [u' 2013', u'$36.55M '], [u' 2012', u'$4M ']] 

这种格式很难理解,任何人都可以请build议一个更好的方式来表示这条信息?

未经testing,但重新排列您的数据。 就像是

 funding_details = json_data[0]["Funding Details"] ... f.writerow( ... 'Funding', 'Funding_2014', 'Funding_2013', ... ) f.writerow( ... obj['Funding'], funding_details[0][1], funding_details[1][1], ... ) 

如果资助年限并不总是按照2014年,2013年,2012年的顺序,那么您可能需要build立一个词典,将年份利息条目设置为空白,然后覆盖存在的年份:

 funding = { u' 2014':'', u' 2013':'', u' 2012':'', u' 2011':'' } for elem in funding_details: funding[ elem[0] ] = elem[1] 

那么你传递给作家的数据将包括funding[ u' 2014'] u'2014 funding[ u' 2014']等,如果它不存在于JSON funding_details列表中,它将仍然是空白的。

你可能也想调查csv.dictwriter