#python #python-requests
#python #python-запросы
Вопрос:
Итак, вот сценарий. Я использую этот API, который я нашел в Интернете, и он работает, но когда я попытался заставить его печатать только ту информацию, которую я хочу, появляется следующая ошибка:
Traceback (most recent call last):
File "c:/Users/perei/OneDrive/Documentos/Evylla/python/projetos python/cotacao_dolar.py", line 13, in <module>
print("Moeda estrangeira: {}".format(dolar_cot["code"]))
KeyError: 'code'
import requests
import json
dolar = requests.get("https://economia.awesomeapi.com.br/all/USD-BRL")
dolar_cot = dolar.json()
# print(dolar.text)
if "status" == 404:
print("Moeda não encontrada")
else:
print("")
print("Moeda estrangeira: {}".format(dolar_cot["code"]))
print("Moeda nacional: {}".format(dolar_cot["codein"]))
print("Moeda estrangeira: {}".format(dolar_cot["code"]))
print("Momento mais baixo: {}".format(dolar_cot["low"]))
print("Moeda mais alto: {}".format(dolar_cot["high"]))
print("Oferta: {}".format(dolar_cot["bid"]))
print("Pedido: {}".format(dolar_cot["ask"]))
Комментарии:
1. Как выглядит json?
2. Вы очень близки, однако при ближайшем рассмотрении вы можете заметить, что API возвращает ключ «USD», а затем значения. Возможно, вы захотите добавить к вызову .json(), чтобы сделать это:
dolar_cot = dolar.json()["USD"]
3. Это сработало отлично, спасибо!!
Ответ №1:
Это ответ, когда вы отправляете запрос get в API
{"USD":{
"code":"USD",
"codein":"BRL","name":"Dólar Comercial",
"high":"5.327",
"low":"5.2477",
"varBid":"0.0104",
"pctChange":"0.2",
"bid":"5.3003",
"ask":"5.3033",
"timestamp":"1599253196",
"create_date":"2020-09-04 21:00:01"}
}
Как вы можете видеть, все поля вложены внутри "USD"
.
Поэтому просто измените dolar_cot = dolar.json()
на dolar_cot = dolar.json()["USD"]
Комментарии:
1. На самом деле, просто измените
dolar_cot = dolar.json()
наdolar_cot = dolar.json()["USD"]
, и вам не нужно будет редактировать все вызовы print.2. Кроме того,
3. Ах, намного лучше! Обновил мой ответ