在python中创建运行时变量以从字典对象中获取数据

时间:2016-08-11 17:14:51

标签: python json python-2.7

我创建了字典对象我在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]

感谢所有帮助的人

桑杰

1 个答案:

答案 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>