![](/img/trans.png)
[英]Python and Json - Printing out keys/values from API output and structuring it
[英]Reading JSON with different repeating keys and printing the output
我正在學習Python,遇到了使用python讀取json的問題,並且遇到了以下問題,不知道如何處理這種情況。 非常感謝您的幫助。
我正在使用python 3.6,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.