簡體   English   中英

使用不同的重復鍵讀取JSON並打印輸出

[英]Reading JSON with different repeating keys and printing the output

我正在學習Python,遇到了使用python讀取json的問題,並且遇到了以下問題,不知道如何處理這種情況。 非常感謝您的幫助。

我正在使用python 3.6,JSON文件格式如下所示

JSON:

{
    "Meta Data": {
        "1. Information": "Intraday (5min) open, high, low, close prices and volume",
        "2. Symbol": "MSFT",
        "3. Last Refreshed": "2019-07-03 13:05:00",
        "4. Interval": "5min",
        "5. Output Size": "Compact",
        "6. Time Zone": "US/Eastern"
    },
    "Time Series (5min)": {
        "2019-07-03 13:05:00": {
            "1. open": "137.4500",
            "2. high": "137.5000",
            "3. low": "137.2064",
            "4. close": "137.5000",
            "5. volume": "0"
        },
        "2019-07-03 13:00:00": {
            "1. open": "137.4800",
            "2. high": "137.6000",
            "3. low": "137.2400",
            "4. close": "137.4500",
            "5. volume": "759357"
        },
        "2019-07-03 12:55:00": {
            "1. open": "137.4300",
            "2. high": "137.5100",
            "3. low": "137.4015",
            "4. close": "137.4720",
            "5. volume": "371471"
        },
        "2019-07-03 12:50:00": {
            "1. open": "137.3750",
            "2. high": "137.4500",
            "3. low": "137.2800",
            "4. close": "137.4333",
            "5. volume": "222396"
        },
        "2019-07-03 12:45:00": {
            "1. open": "137.4100",
            "2. high": "137.4700",
            "3. low": "137.3200",
            "4. close": "137.3727",
            "5. volume": "248270"
        },
        "2019-07-03 12:40:00": {
            "1. open": "137.3000",
            "2. high": "137.4128",
            "3. low": "137.2900",
            "4. close": "137.4100",
            "5. volume": "177767"
        },
        "2019-07-03 12:35:00": {
            "1. open": "137.3200",
            "2. high": "137.3700",
            "3. low": "137.2600",
            "4. close": "137.3000",
            "5. volume": "194017"
        },
        "2019-07-03 12:30:00": {
            "1. open": "137.3797",
            "2. high": "137.4250",
            "3. low": "137.3100",
            "4. close": "137.3100",
            "5. volume": "148587"
        },
        "2019-07-03 12:25:00": {
            "1. open": "137.4400",
            "2. high": "137.4500",
            "3. low": "137.3600",
            "4. close": "137.3750",
            "5. volume": "163235"
        },
        "2019-07-03 12:20:00": {
            "1. open": "137.2300",
            "2. high": "137.4650",
            "3. low": "137.1900",
            "4. close": "137.4400",
            "5. volume": "241906"
        },
}
}

我嘗試過的代碼:

蟒蛇

import json
with open("d:/Python Projects/myjason3.json") as f:
    j1 = json.load(f)

    for data in j1['Time Series (5min)']:

        print([data]['1. open'])

我想在每個時間序列值(例如'2019-07-03 13:05:00')下打印鍵'1.open'的值。 我收到的錯誤是:

 print([data]['1. open'])
TypeError: list indices must be integers or slices, not str

您沒有正確引用數據字典。 您應該可以像這樣遍歷'Time Series (5min)'鍵值:

for timestamp, values in j1['Time Series (5min)'].items():
    print(timestamp, values['1. open'])

第一個錯誤來自data括號: print(data['1. open'])

[data]創建一個僅包含一個元素data的列表,而您想直接訪問data字典。

此外,您將在字典上進行迭代,該字典將生成鍵而不是值。 嘗試使用: for data in j1['Time Series (5min)'].values():

for data in j1['Time Series (5min)']:將遍歷字典的鍵(日期),而不遍歷實際數據。

[data]['1. open'] [data]['1. open']轉換為(即在第一次迭代中)為["2019-07-03 13:05:00", ]['1. open'] ["2019-07-03 13:05:00", ]['1. open']讓您嘗試訪問字符串列表( ["2019-07-03 13:05:00", ] )的鍵( '1. open' )。

要遍歷dict的鍵值,Python的方法是使用dict.items() api:

import json
with open("d:/Python Projects/myjason3.json") as f:
    j1 = json.load(f)
    for datetime_key, data in j1['Time Series (5min)'].items():
        print(data['1. open'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM