我有一个小脚本,可以将JSON对象转换为字典,如下所示:
import csv
import json
import sys
jFile = open('path\\to\\jsonFile.json')
j = jFile.read()
class Payload(object):
def __init__(self, j):
self.__dict__ = json.loads(j)
p = Payload(j)
然后我可以循环遍历字典以便相当容易地获得我的键值对:
for d in p.Data:
for key in d:
#Do Something
将所有值写入CSV文件也很简单,但编写标题的最“Pythonic”方法是什么?我知道我可以做类似下面的事情,但这似乎效率低下而不是最佳实践。
...
p = Payload(j)
with open('path\\to\\csvFile.csv','w',encoding='utf8',newline='') as f:
for i, d in enumerate(p.Data):
w = csv.DictWriter(f, d.keys())
if i == 0:
w.writeheader()
w.writerow(d)
有没有办法只在没有每次迭代进行评估的情况下编写标题一次?
答案 0 :(得分:1)
with open('path\\to\\csvFile.csv','w',encoding='utf8',newline='') as f:
w = csv.DictWriter(f, p.Data[0].keys())
w.writeheader()
for d in p.Data:
w.writerow(d)
只是在循环之外做。