Vérifier si un élément est présent dans un dictionnaire.

Résolu/Fermé
Synerz Messages postés 1221 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 27 décembre 2017 - Modifié par Synerz le 3/12/2016 à 10:07
baladur13 Messages postés 46385 Date d'inscription mercredi 11 avril 2007 Statut Modérateur Dernière intervention 19 avril 2024 - 3 déc. 2016 à 14:59
Bonjour,

Voila j'ai un programme en Python ou je récupère des informations sur une page web et ou je tri des éléments.

Voici la page : https://api.wordreference.com/a7c51/json/enfr/going

En gros j'affiche ce qu'il y a dans "FirstTranslation" et "SecondTranslation" sauf que certains mots n'ont pas de "SecondTranslation" donc quand je veux print ce "SecondTranslation" alors qu'il est vide bah j'ai une erreur ( normal :D ). Donc je veux faire un if qui vérifie si "SecondTranslation" existe ou pas. J'ai utilisé plusieurs méthodes mais cela ne fonctionne pas.

# J'ai essayé comme ça:
if  if i.has_key("SecondTranslation")

# Comme ça
if not ["SecondTranslation"]:

# et comme ça ou sans les [] à i
if ["SecondTranslation"] in [i]:


Et rien ne fonctionne, des idées ?
Voici mon code pour vous aidez à comprendre.

#! /usr/bin/env python3
# -*- coding: utf8 -*-

#Import ###########################

from urllib.request import urlopen
import json
from pprint import pprint

#End Import #######################

#Start Code ##################################################################

verbe = input("Saisir un verbe :")
URL = "http://api.wordreference.com/a7c51/json/enfr/" + verbe
search = urlopen(URL)
search.status
assert search.status == 200

content_type = search.getheader('content-type')
print(content_type)

mime_type, encoding = content_type.split(';')
assert mime_type == 'application/json'

#Le  _, est un nom de variable utilisée pour jeté une partie du résultat
_, encoding = encoding.split('=')

print(encoding)

#Récupère le contenu
content = search.read()
assert type(content) == bytes

#Décode le contenu
text = content.decode(encoding)
assert type(text) == str

translations = json.loads(text)

for key in sorted(translations):
    if not key.startswith('term'):
        continue
    principal_translations = translations[key]["PrincipalTranslations"]
    i = 0
    print ("traductions principales : \n")
    while True:
        try:
            translation = principal_translations[str(i)]
        except KeyError:
            break
        i = str(i)
        print(i +". "+ translation["OriginalTerm"]["term"] + " /" + translation["OriginalTerm"]["POS"] + "/" + " ("+ translation["OriginalTerm"]["sense"] + "):" + "\n\t" + translation["FirstTranslation"]["term"] + " /" + translation["FirstTranslation"]["POS"] + "/" + " (" + translation["FirstTranslation"]["sense"] + ")"+ "\n\t" + translation["SecondTranslation"]["term"] + " /" + translation["SecondTranslation"]["POS"] + "/" + " (" + translation["SecondTranslation"]["sense"] + ")")
        i=int(i)
        i += 1
    principal_translations = translations[key]["AdditionalTranslations"]
    i = 0
    print ("\ntraductions secondaires : \n")
    while True:
        try:
            translation = principal_translations[str(i)]
        except KeyError:
            break
        i = int(i)
        if ["SecondTranslation"] in [i]:
            i = str(i)
            print("traductions principales : \n" + i +". "+ translation["OriginalTerm"]["term"] + " /" + translation["OriginalTerm"]["POS"] + "/" + " ("+ translation["OriginalTerm"]["sense"] + "):" + "\n\t" + translation["FirstTranslation"]["term"] + " /" + translation["FirstTranslation"]["POS"] + "/" + " (" + translation["FirstTranslation"]["sense"] + ")"+ "\n\t" + translation["SecondTranslation"]["term"] + " /" + translation["SecondTranslation"]["POS"] + "/" + " (" + translation["SecondTranslation"]["sense"] + ")")
        else:
            i = str(i)
            print(i +". "+ translation["OriginalTerm"]["term"] + " /" + translation["OriginalTerm"]["POS"] + "/" + " ("+ translation["OriginalTerm"]["sense"] + "):" + "\n\t" + translation["FirstTranslation"]["term"] + " /" + translation["FirstTranslation"]["POS"] + "/" + " (" + translation["FirstTranslation"]["sense"] + ")")
        i=int(i)
        i += 1






merci d'avance :)
Un peu d'aide contre un topic résolu !
A voir également:

1 réponse

Synerz Messages postés 1221 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 27 décembre 2017 116
3 déc. 2016 à 12:25
Trouvé c'etais ça la bonne ligne en faite haha
if  ('SecondTranslation' in translation ) :

1
baladur13 Messages postés 46385 Date d'inscription mercredi 11 avril 2007 Statut Modérateur Dernière intervention 19 avril 2024 13 212
3 déc. 2016 à 14:59
0