如何从json输出中仅提取一个值?

2024-06-25 23:13:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python requests从API检索数据,我只需要过滤掉一个值

我是JSON新手,希望有人能帮我一把

下面是我的代码和返回的输出。但是,我只需要在“motTests”下的第一个案例“expiryDate”,在本例中是“2022.04.05”。我怎样才能过滤掉这个?提前谢谢

我的代码:

import requests

url = "https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests"
headers = {
    'Accept': 'application/json+v6',
    'x-api-key': 'my_api_key'
}

resp = requests.get(url, headers=headers, params={'registration': 'YD14YCP'}
)

print(resp.content)

我收到的输出是:

b'[{"registration":"YD14YCP","make":"BMW","model":"530","firstUsedDate":"2014.03.01","fuelType":"Diesel","primaryColour":"White","vehicleId":"YRVs92Gaddsa65jq2zD2Q==","registrationDate":"2014.03.01","manufactureDate":"2014.03.01","engineSize":"2993","motTests":[{"completedDate":"2021.03.25 14:09:25","testResult":"PASSED",**"expiryDate":"2022.04.05"**,"odometerValue":"63823","odometerUnit":"mi","motTestNumber":"5570263656619","odometerResultType":"READ","rfrAndComments":[]},{"completedDate":"2020.03.20 10:30:55","testResult":"PASSED","expiryDate":"2021.04.05","odometerValue":"57548","odometerUnit":"mi","motTestNumber":"8165169314","odometerResultType":"READ","rfrAndComm
    ents":[{"text":"Rear Brake pad(s) wearing thin (1.1.13 (a) (ii))","type":"ADVISORY","dangerous":false},{"text":"Front Tyre worn close t
    o legal limit/worn on edge  both slightly worn on outer edge (5.2.3 (e))","type":"ADVISORY","dangerous":false}]},{"completedDate":"2019
    .04.06 09:34:32","testResult":"PASSED","expiryDate":"2020.04.05","odometerValue":"47558","odometerUnit":"mi","motTestNumber":"403589926
    352","odometerResultType":"READ","rfrAndComments":[]},{"completedDate":"2018.04.06 08:03:08","testResult":"PASSED","expiryDate":"2019.04.05","odometerValue":"41101","odometerUnit":"mi","motTestNumber":"946286448569","odometerResultType":"READ","rfrAndComments":[]},{"com
    pletedDate":"2017.02.28 14:42:55","testResult":"PASSED","expiryDate":"2018.02.28","odometerValue":"28624","odometerUnit":"mi","motTestN
    umber":"37263578588","odometerResultType":"READ","rfrAndComments":[{"text":"Offside Rear Tyre worn close to the legal limit  2-3mm (4.
    1.E.1)","type":"ADVISORY","dangerous":false}]}]}]'

Tags: textreadrequestsheadersmipassedtestresultexpirydate
3条回答

获取请求后,检索所需数据的最佳方法是获取值:

上面的代码:

import requests

url = "https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests"
headers = {
    'Accept': 'application/json+v6',
    'x-api-key': 'my_api_key'
}

现在,

resp.json().get('KEY_ONE').get('KEY_TWO') # and so on

像这样的

您可以这样做,只打印所需的值:

cookieJar = resp.cookies.get_dict()
print(cookieJar["registration"])

[输出]

YD14YCP

试试这个:

import json
raw = '[{"registration":"YD14YCP","make":"BMW","model":"530","firstUsedDate":"2014.03.01","fuelType":"Diesel","primaryColour":"White","vehicleId":"YRVs92Gaddsa65jq2zD2Q==","registrationDate":"2014.03.01","manufactureDate":"2014.03.01","engineSize":"2993","motTests":[{"completedDate":"2021.03.25 14:09:25","testResult":"PASSED","expiryDate":"2022.04.05","odometerValue":"63823","odometerUnit":"mi","motTestNumber":"5570263656619","odometerResultType":"READ","rfrAndComments":[]},{"completedDate":"2020.03.20 10:30:55","testResult":"PASSED","expiryDate":"2021.04.05","odometerValue":"57548","odometerUnit":"mi","motTestNumber":"8165169314","odometerResultType":"READ","rfrAndComm ents":[{"text":"Rear Brake pad(s) wearing thin (1.1.13 (a) (ii))","type":"ADVISORY","dangerous":false},{"text":"Front Tyre worn close t o legal limit/worn on edge both slightly worn on outer edge (5.2.3 (e))","type":"ADVISORY","dangerous":false}]},{"completedDate":"2019 .04.06 09:34:32","testResult":"PASSED","expiryDate":"2020.04.05","odometerValue":"47558","odometerUnit":"mi","motTestNumber":"403589926 352","odometerResultType":"READ","rfrAndComments":[]},{"completedDate":"2018.04.06 08:03:08","testResult":"PASSED","expiryDate":"2019.04.05","odometerValue":"41101","odometerUnit":"mi","motTestNumber":"946286448569","odometerResultType":"READ","rfrAndComments":[]},{"com pletedDate":"2017.02.28 14:42:55","testResult":"PASSED","expiryDate":"2018.02.28","odometerValue":"28624","odometerUnit":"mi","motTestN umber":"37263578588","odometerResultType":"READ","rfrAndComments":[{"text":"Offside Rear Tyre worn close to the legal limit 2-3mm (4. 1.E.1)","type":"ADVISORY","dangerous":false}]}]}]'

res = json.loads(response)
print(res[0]["motTests"][0]["expiryDate"])

[外]

'2022.04.05'

相关问题 更多 >