将JSON流转换为CSV

时间:2016-11-07 17:29:22

标签: python json csv file-conversion

我想将文件中粘贴的JSON流(近10,000个)转换为CSV文件,其中包含标题和值的特定格式。

我有以下JSON数据流:

{"shortUrlClicks":"594","longUrlClicks":"594","countries":[{"count":"125","id":"IQ"},{"count":"94","id":"US"},{"count":"56","id":"TR"},{"count":"50","id":"SA"},{"count":"29","id":"DE"},{"count":"24","id":"TN"},{"count":"20","id":"DZ"},{"count":"14","id":"EG"},{"count":"13","id":"MA"},{"count":"12","id":"PS"}],"browsers":[{"count":"350","id":"Chrome"},{"count":"100","id":"Firefox"},{"count":"46","id":"Safari"},{"count":"35","id":"Mobile"},{"count":"20","id":"Mobile Safari"},{"count":"20","id":"SamsungBrowser"},{"count":"8","id":"MSIE"},{"count":"6","id":"Opera"},{"count":"3","id":"OS;FBSV"},{"count":"2","id":"Maxthon"}],"platforms":[{"count":"227","id":"Android"},{"count":"221","id":"Windows"},{"count":"67","id":"iPhone"},{"count":"30","id":"X11"},{"count":"25","id":"Macintosh"},{"count":"8","id":"iPad"},{"count":"2","id":"Android 4.2.2"},{"count":"1","id":"Android 4.1.2"},{"count":"1","id":"Android 4.3"},{"count":"1","id":"Android 5.0.1"}],"referrers":[{"count":"340","id":"unknown"},{"count":"193","id":"t.co"},{"count":"38","id":"m.facebook.com"},{"count":"12","id":"addpost.it"},{"count":"4","id":"plus.google.com"},{"count":"3","id":"www.facebook.com"},{"count":"1","id":"goo.gl"},{"count":"1","id":"l.facebook.com"},{"count":"1","id":"lm.facebook.com"},{"count":"1","id":"plus.url.google.com"}]}
{"shortUrlClicks":"594","longUrlClicks":"594","countries":[{"count":"125","id":"IQ"},{"count":"94","id":"US"},{"count":"56","id":"TR"},{"count":"50","id":"SA"},{"count":"29","id":"DE"},{"count":"24","id":"TN"},{"count":"20","id":"DZ"},{"count":"14","id":"EG"},{"count":"13","id":"MA"},{"count":"12","id":"PS"}],"browsers":[{"count":"350","id":"Chrome"},{"count":"100","id":"Firefox"},{"count":"46","id":"Safari"},{"count":"35","id":"Mobile"},{"count":"20","id":"Mobile Safari"},{"count":"20","id":"SamsungBrowser"},{"count":"8","id":"MSIE"},{"count":"6","id":"Opera"},{"count":"3","id":"OS;FBSV"},{"count":"2","id":"Maxthon"}],"platforms":[{"count":"227","id":"Android"},{"count":"221","id":"Windows"},{"count":"67","id":"iPhone"},{"count":"30","id":"X11"},{"count":"25","id":"Macintosh"},{"count":"8","id":"iPad"},{"count":"2","id":"Android 4.2.2"},{"count":"1","id":"Android 4.1.2"},{"count":"1","id":"Android 4.3"},{"count":"1","id":"Android 5.0.1"}],"referrers":[{"count":"340","id":"unknown"},{"count":"193","id":"t.co"},{"count":"38","id":"m.facebook.com"},{"count":"12","id":"addpost.it"},{"count":"4","id":"plus.google.com"},{"count":"3","id":"www.facebook.com"},{"count":"1","id":"goo.gl"},{"count":"1","id":"l.facebook.com"},{"count":"1","id":"lm.facebook.com"},{"count":"1","id":"plus.url.google.com"}]}

......等等。

我希望将其转换为CSV形式,无论标题是什么(shortUrlclicks,longUrclicks等):

OUTPUT

如果你能帮助我,我会感激不尽。任何python或任何其他语言的代码都是有用的。

2 个答案:

答案 0 :(得分:0)

您可以使用Python标准库中的JSON库来使用OS库(也可以从Python标准库)读取JSON和读/写文件。

这将是这样的:

f = File.open('file.json', 'r')
items = json.loads(f.read())
csv_file = ""

for row in items():
    new_row = ""
    # get columns somehow
    for column in columns:
        new_row = "%s," % column 

    # Finished row, append a '\n' char to the row string.
    csv_file.append("%s\n" % new_row)

# write json file
out = File.open('out.csv', 'rw')
out.write(csv_file)
out.close()

PS:在发布之前我没有运行此代码。这是给你一个想法的东西。

答案 1 :(得分:0)

您可以使用Pandas为您执行此操作。

像这样

读取你的JSON文件
  
    

df = pandas.read_json(' filename.json')

  

写入csv

  
    

df.to_csv(' filename.csv',index = False)#set index false如果你不需要它

  

示例: http://hayd.github.io/2013/pandas-json

<强> REF: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html