繁体   English   中英

使用Python中的对象和键数组从json数组获取值

[英]Getting values from json array using an array of object and keys in Python

我是Python的新手,我正在尝试编写脚本以通过动态传递键并从csv中读取键来提取json键。 首先,这是我的第一篇文章,对于我的问题是平庸的,并且代码不完整,我很抱歉,但这只是理解问题的伪代码(我希望不要使其复杂化...)

以下部分代码从三个键(组,用户和ID或用户名)中检索值,但我想从csv加载对象和键以使其具有动力学特征。

输入json

{
"fullname": "The Full Name",
"group": {
            "user": {
                        "id": 1,
                        "username": "John Doe"
                    },
            "location": {
                        "x": "1234567",
                        "y": "9876543"
                        }
        },
"color": {
            "code": "ffffff",
            "type" : "plastic"
        }
}

Python代码...

...
url = urlopen(jsonFile)
data = json.loads(url.read())
id = (data["group"]["user"]["id"])
username = (data["group"]["user"]["username"])
...

File.csv加载到数组中。 每行包含一个或多个键。

fullname;
group,user,id;
group,user,username;
group,location,x;
group,location,y;
color,code;

问题是:我可以使用包含要提取的对象或键的变量吗? 我如何指定在keys数组中有多少个key才能仅使用一行将它们放入data([] [] ...)?

像这样的伪代码:

...
url = urlopen(jsonFile)
data = json.loads(url.read())
...
keys = line.split(',')
...
# using keys[] to identify the objects and keys
value = (data[keys[0]][keys[1]][keys[2]])
...

但是,行value = (data[keys[0]][keys[1]][keys[2]])应该具有从csv读取的每行的确切密钥数。 还是我必须像这样做出一些“如果”行?:

...
if len(keys) == 3:
   value = (data[keys[0]][keys[1]][keys[2]])
if len(keys) == 2:
   value = (data[keys[0]][keys[1]])
...

非常感谢!

我不确定我是否完全理解您的问题,但是我建议您尝试玩熊猫 可能就这么简单:

import pandas as pd

df = pd.read_json(<yourJsonFile>, orient='columns')
name = df.fullname[0]
group_user = df.group.user 
group_location = df.group.location
color_type = df.color.type 
color_code = df.color.code

(其中group_user和group_location将是python字典 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM