Vérifier si un élément est présent dans un dictionnaire.
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 : http://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.
Code:
1 2 3 4 5 6 7 8 9
|
# 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.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#! /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
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 :)