簡體   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