Я пытаюсь создать программу для отображения значения dolar, но я не могу заставить ее печатать мне нужную информацию

#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. Кроме того, print это функция, а не оператор.

3. Ах, намного лучше! Обновил мой ответ