在Python中如何将以下JSON字符串保存到CSV文件中?
{
'1.txt': [],
'2.txt': [],
'5.txt': [],
'4.txt': ['3.txt','6.txt'],
'7.txt': ['8.txt']
}
重要的是,我只想保存那些有孩子的条目的数量,即对于上面的例子,结果将是:
4
3
6
7
8
这是我目前准备的,但我不知道如何检查嵌套元素:
x = json.loads(data)
f = csv.writer(open("test.csv", "wb+"))
# Write CSV Header
f.writerow(["number"])
for x in x:
f.writerow([x[...]])
答案 0 :(得分:1)
只需检查列表是否为空或不重复dict中的项目:
for k, v in d.items():
if v: # will be False for any empty list
print(k.split(".")[0])
print([s.split(".")[0] for s in v])
7
['8']
4
['3', '6']
取决于您想要的输出:
f = csv.writer(open("test.csv", "w"))
# Write CSV Header
f.writerow(["name", "qty"])
for k, v in d.items(): # iteritems python2
if v:
f.writerow([k.split(".")[0]]+[s.split(".")[0] for s in v])
哪个输出:
name,qty
7,8
4,3,6
如果你想要所有人分开:
with open("test.csv","w") as f:
f.write("name\n")
for k, v in d.items():
if v:
f.write("{}\n".format(k.split(".")[0]))
f.write("\n".join([s.split(".")[0] for s in v])+"\n"
输出:
name
7
8
4
3
6
要使用csv模块,您需要将子元素包装在列表或某个容器中:
with open("test.csv","w") as f:
wr = csv.writer(f)
wr.writerow(["name"])
for k, v in d.items():
if v:
wr.writerow([k.split(".")[0]])
wr.writerows([[s.split(".")[0]] for s in v])
答案 1 :(得分:0)
这应该有效:
data = {
'1.txt': [],
'2.txt': [],
'5.txt': [],
'4.txt': ['3.txt','6.txt'],
'7.txt': ['8.txt']
}
f = csv.writer(open("test.csv", "wb+"))
f.writerow(["name", "qty"])
for key, value in data.iteritems():
if len(value) > 0:
f.writerow([key, len(value)])