我有一个脚本,它给出了这样的输出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
将其写入csv的方法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})
任何人都可以帮助我。
答案 0 :(得分: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)
答案 1 :(得分: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})
这是对的吗?或者如何纠正这个?