2015-11-20 369 views
0

我怎样才能以下json格式的日志转换为csv文件中python转换JSON到CSV:
Json的输入(log.json):我怎样才能在Python

{"time":"14472","abc":"0","Def":[{"name":"C","value":77},{"name":"N","value":88}]} 
{"time":"1447","abc":"1","Def":[{"name":"C","value":99,{"name":"N","value":0.12}]} 

CSV输出:

time abc name value 
14472 0  C  77 
14472 0  N  88 
1447 1  C  99  
1447 1  N  0.12 
+0

你确定你有输出吗?你不是说第二行是'N 88'吗?第三行是'C 99'? –

+0

您将必须首先拥有有效的json。我建议[jsonlint](http://jsonlint.com/)检查。 – gla3dr

+2

您是否自己尝试过某些东西,如果有,请告诉我们您卡在哪里,或者您是否只是在等待某人发布答案? –

回答

0

看看https://docs.python.org/2/library/json.html

我还没有用过它个人,但我撇过一次的文档,它似乎为每个json对象和每个数组的列表创建一个字典。

一旦你有了,那么你可以得到列标签的键,然后你可以它实际上写入文件应该不是一个大问题。

0

这应该假定“log.json”输入文件包含有效的JSON对象:

import csv 
import json 

with open('log.json', 'rb') as infile, open('output.csv', 'wb') as outfile: 
    fieldnames = ['time', 'abc', 'name', 'value'] 
    writer = csv.DictWriter(outfile, fieldnames, delimiter='\t') 
    writer.writeheader() 
    for line in infile: 
     row = json.loads(line) 
     for a_def in row['Def']: 
      writer.writerow({'time': row['time'], 
          'abc': row['abc'], 
          'name': a_def['name'], 
          'value': a_def['value']})