2016-04-28 57 views
0

我有一个脚本,它给出了这样的输出csv,其中的值不写入第三列并保留为空。解析json里面csv

name|fail|total| 
test1|"{'fail': 0, 'total': 1}"| 
test2|"{'fail': 0, 'total': 6}"| 

我想写这个输出到一个csv,我希望输出3列csv。我如何解析第二列并将值打印到两个不同的列?

name,fail,total 
test1,0,1 
test2,0,6 

这里是我在尝试使用python

with open('file.csv', 'w') as csvfile: 
fieldnames = ['name', 'fail', 'total'] 
output = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter=',') 
output.writeheader() 
for k, v in lookupTable.iteritems(): 
    output.writerow({fieldnames[0]: k, fieldnames[1]: v}) 

谁能帮我这个写这为csv。

回答

0

从你得到的输出我可以得出结论type(v)dict,所以你需要解压缩它的值。这是for循环,可以给你正确的结果。

keys = ['plan', 'Total', 'Time', 'name', 'createdDate'] 
fieldnames = ['plan', 'totalDirections', 'stopTime', 'customerName', 'createDate'] 
row = dict(zip(fieldnames, [data[k] for k in keys])) 
output = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter=',') 
output.writeheader() 
output.writerow(row) 
+0

但是这不是为我工作:(我收到此错误 '回溯(最近最后一次通话): 文件“analytics.py”,第48行,在 行=字典(邮政编码(字段名,[json_data [k] for k in json_keys])) TypeError:字符串索引必须是整数,而不是str' – csvb

+0

对不起,我无法弄清楚我做了什么错误,但我无法得到输出我需要一个整齐的csv作为输出 '{“createdDate”:“2016-04-11 05:23:57”,“stopTime”:“2016-04-11T00:00 :00.000Z“,”plan“:”Starter“,”name“:{”fail“:”0“,”total“:”1“,”cust“:”1mw“},”directionsTotal“:0}' – csvb

+0

什么你现在得到错误了吗? – taras

0

@ user128285是的,这是有效的。我们可以对json.dumps执行相同的操作吗?

我有另一个脚本,json.dumps的输出应该写入csv。

print json.dumps(data)打印像下面

{"plan": "yes", "Total": 0, "Time": "2016-04-11T00:00:00.000Z", "name": {"fail": "0", "total": "1", "cName": "red"}, "createdDate": "2016-04-11 05:23:57"}

这里是输出我你的建议后,如何试图像上面分析上面的输出到CSV:

with open('customer_analysis', 'w') as csvfile: 
fieldnames = ['plan', 'totalDirections', 'stopTime', 'customerName', 'createDate'] 
output = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter=',') 
output.writeheader() 
for a, b, c, d, e in json.dumps(data): 
output.writerow({fieldnames[0]: a, fieldnames[1]: b, fieldnames[2]: c, fieldnames[3]: d['fail'], fieldnames[4]: d['total'], fieldnames[5]: e}) 

这是正确的?或如何纠正?

+0

当我使用上面的代码片段时,它引发我 'ValueError:需要多个值才能解包'错误 – csvb

+0

您应该明确地构建传递给writerow的字典。 – taras