我创建了字典对象我在python中解析了一个json文件....让我们假设数据如下
plants = {}
# Add three key-value tuples to the dictionary.
plants["radish"] = {"color":"red", "length":4}
plants["apple"] = {"smell":"sweet", "season":"winter"}
plants["carrot"] = {"use":"medicine", "juice":"sour"}
这可能是一个很长的字典对象
但是在运行时,我只需要将少量值存储在逗号分隔的csv文件中.....所需的属性列表在文件中.... e.g
radish.color
carrot.juice
那么,我将如何在python中创建一个应用程序,在那里我可以创建动态变量,如下面的内容,以获取json对象的数据。创建一个csv文件....
在运行时我需要变量
plants[radish][color]
plants[carrot][juice]
感谢所有帮助的人
桑杰
答案 0 :(得分:1)
考虑逐行解析文本文件以检索文件内容。在读取中,按行分隔行,表示字典的键。从那里,使用这样的键列表来检索字典值。然后,迭代地将值输出到csv,由项目数决定:
Txt 文件
radish.color
carrot.juice
Python 代码
import csv
plants = {}
plants["radish"] = {"color":"red", "length":4}
plants["apple"] = {"smell":"sweet", "season":"winter"}
plants["carrot"] = {"use":"medicine", "juice":"sour"}
data = []
with open("Input.txt", "r") as f:
for line in f:
data.append(line.replace("\n", "").strip().split("."))
with open("Output.csv", "w") as w:
writer = csv.writer(w, lineterminator = '\n')
for item in data:
if len(item) == 2: # ONE-NEST DEEP
writer.writerow([item[0], item[1], plants[item[0]][item[1]]])
if len(item) == 3: # SECOND NEST DEEP
writer.writerow([item[0], item[1], item[2], plants[item[0]][item[1]][item[2]]])
输出 csv
radish,color,red
carrot,juice,sour
(注意:嵌套越深,输出的列越多,与列中的键/值对冲突 - 可能会输出不同的结构化csv文件,如单级文件/二级文件) < / p>