0
votes

Accéder à une valeur depuis JSON en Python

Salut, j'essaye d'apprendre le python. J'essaye d'obtenir le taux de change de USD en AUD. Mais j'ai du mal à accéder aux informations du JSON stockées dans les données. Comment puis-je obtenir "AUD": 1,4817 en "conversion_rates":

{
    "result": "success",
    "documentation": "https://www.exchangerate-api.com/docs",
    "terms_of_use": "https://www.exchangerate-api.com/terms",
    "time_last_update_unix": 1585267200,
    "time_last_update_utc": "Fri, 27 Mar 2020 00:00:00 +0000",
    "time_next_update_unix": 1585353700,
    "time_next_update_utc": "Sat, 28 Mar 2020 00:00:00 +0000",
    "base_code": "USD",
    "conversion_rates": {
        "USD": 1,
        "AUD": 1.4817,
        "BGN": 1.7741,
        "CAD": 1.3168,
        "CHF": 0.9774,
        "CNY": 6.9454,
        "EGP": 15.7361,
        "EUR": 0.9013,
        "GBP": 0.7679,
        "...": 7.8536,
        "...": 1.3127,
        "...": 7.4722, etc. etc.
    }
}

C'est ce qui est stocké dans les données

# Where USD is the base currency you want to use
    url = 'https://v6.exchangerate-api.com/v6/MY_API_KEY/latest/USD'
# Making our request
    response = requests.get(url)
    data = response.json()

Merci


3 commentaires

data['conversion_rates']['AUD']


Bonne journée @rdas j'ai essayé cela et j'ai obtenu cette exception aud lors de l'évaluation. Utilisation de cette aud = data ['conversion_rates'] ['AUD']


Nevermind merci mon problème était que j'essayais d'imprimer et j'ai oublié de le convertir en une chaîne


3 Réponses :


4
votes

response.json() renvoie les données json sous forme de dict . Vous pouvez accéder à un dict via dict[key] ou dict.get(key, default) . Le premier lève une exception si la clé n'est pas trouvée. Le second retourne None par défaut si la clé n'est pas trouvée ou la valeur par défaut que vous avez donnée à get -call.

Donc, dans votre cas, ce serait:

try:
    aud_conversion_rate = data['conversion_rates']['AUD']
except KeyError:
    print("Could not get the USD to AUD conversion rate")

ou par exemple

data.get('conversion_rates', default={}).get('AUD')

Vous voudrez probablement choisir la première opportunité et l'entourer d'un essai / attraper:

data['conversion_rates']['AUD']

Pour référence: https://docs.python.org/3/tutorial/datastructures.html#dictionaries


1 commentaires

Merci probablement mieux j'essaye quelque chose comme ça



1
votes

Vous pouvez simplement obtenir toutes les valeurs dont vous avez besoin par des clés.

converstion_rates = data['conversion_rates']
USD = converstion_rates['USD']
AUD = converstion_rates['AUD']

Veuillez consulter ce document: Données Python- Json


1 commentaires

Cela a du sens car il s'agit d'un JSON imbriqué correct?



1
votes

La réponse analysée à votre requête est un dictionnaire en python. Vous pouvez le voir comme l'impression est écrite avec des accolades. Un dictionnaire se compose de paires valeur / clé. Dans la sortie écrite, séparés par deux-points. Vous pouvez accéder à une entrée par indexation, comme suit:

data["conversion rates"]

Dans votre cas, c'est encore un dictionnaire. Alors procédez comme décrit.


1 commentaires

Merci pour l'aide.