簡體   English   中英

如何從 json 響應中獲取 output 特定數據?

[英]How do I output specific data from a json response?

我對在 python 中使用 API 相當陌生,我正在嘗試創建一個系統來輸出以前賽車比賽的數據。 我已經向 API 發送了請求,但我很難將其發送到 output 一個特定的數據(例如時間、位置)。 當我打印發送的原始 JSON 數據時,我得到了這個。

{
    "MRData": {
        "RaceTable": {
            "Races": [
                {
                    "Circuit": {
                        "Location": {
                            "country": "Spain",
                            "lat": "41.57",
                            "locality": "Montmeló",
                            "long": "2.26111"
                        },
                        "circuitId": "catalunya",
                        "circuitName": "Circuit de Barcelona-Catalunya",
                        "url": "http://en.wikipedia.org/wiki/Circuit_de_Barcelona-Catalunya"
                    },
                    "date": "2020-08-16",
                    "raceName": "Spanish Grand Prix",
                    "round": "6",
                    "season": "2020",
                    "time": "13:10:00Z",
                    "url": "https://en.wikipedia.org/wiki/2020_Spanish_Grand_Prix"
                }
            ],
            "round": "6",
            "season": "2020"
        },
        "limit": "30",
        "offset": "0",
        "series": "f1",
        "total": "1",
        "url": "http://ergast.com/api/f1/2020/6.json",
        "xmlns": "http://ergast.com/mrd/1.4"
    }
}

只是為了掌握 API,我只是試圖 output 一個特定種族的簡單數據,一旦我能做到這一點,我就能夠擴大它和 output 各種數據。 我以為它就像輸入print(data['time'])一樣簡單(如下所示),但我收到一條錯誤消息:

鍵錯誤:'時間'

我的源代碼:

import requests

response = requests.get("http://ergast.com/api/f1/2020/6.json")

data = response.json()


print (data["time"])

任何幫助表示贊賞!

像這樣...

import json


data = """{
   "MRData":{
      "xmlns":"http://ergast.com/mrd/1.4",
      "series":"f1",
      "url":"http://ergast.com/api/f1/2020/6.json",
      "limit":"30",
      "offset":"0",
      "total":"1",
      "RaceTable":{
         "season":"2020",
         "round":"6",
         "Races":[
            {
               "season":"2020",
               "round":"6",
               "url":"https://en.wikipedia.org/wiki/2020_Spanish_Grand_Prix",
               "raceName":"Spanish Grand Prix",
               "Circuit":{
                  "circuitId":"catalunya",
                  "url":"http://en.wikipedia.org/wiki/Circuit_de_Barcelona-Catalunya",
                  "circuitName":"Circuit de Barcelona-Catalunya",
                  "Location":{
                     "lat":"41.57",
                     "long":"2.26111",
                     "locality":"Montmeló",
                     "country":"Spain"
                  }
               },
               "date":"2020-08-16",
               "time":"13:10:00Z"
            }
         ]
      }
   }
}"""

jsonData = json.loads(data)

Races 是一個數組,在這種情況下只有一場比賽,因此您可以將其指定為["Races"][0]

print(jsonData["MRData"]["RaceTable"]["Races"][0]["time"])

如果你有一個平面字典, data['time']會起作用,但是你有一個嵌套的字典/列表結構,所以:

data["MRData"]["RaceTable"]["Races"][0]["time"]

data["MRData"]返回另一個字典,它有一個鍵"RaceTable" 這個鍵的值又是一個字典,它有一個鍵"Races" 這個值是一個種族列表,你只有一個。 比賽再次成為關鍵time的命令。

暫無
暫無

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

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