在python中创建运行时变量以从dictionary obj获取数据

2024-09-27 17:55:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了dictionary对象来解析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"}

这可能是一个很长的dictionary对象

但在运行时,我只需要在逗号分隔的csv文件中存储几个值…..所需的属性列表在一个文件中。。。。 e、 克

radish.color
carrot.juice

那么,我如何在python中创建一个应用程序,在这个应用程序中,我可以创建如下动态变量来获取json对象的数据并创建一个csv文件。。。。你知道吗

在运行时我需要变量

plants[radish][color]
plants[carrot][juice]

感谢所有帮助我们的人

桑杰


Tags: 文件csv数据对象keyaddjson应用程序
1条回答
网友
1楼 · 发布于 2024-09-27 17:55:05

考虑逐行解析文本文件以检索文件内容。在read中,将表示字典键的行按句点分开。从那里,使用这样一个键列表来检索字典值。然后,以项目数为条件,迭代地将值输出到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文件,如一级文件/二级文件)

相关问题 更多 >

    热门问题