La clé n'est pas reconnue pourtant elle est dans le JSON

Fermé
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017 - 26 août 2016 à 14:54
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 août 2016 à 20:53
Bonjour,

Je ne comprends pas pourquoi j'ai une erreur sur la clé sachant que la clé existe bien !


J'ai utilisé d'autres clé, j'ai la même erreur.
Voici le fichier JSON pour cette clé :
https://fr.wiktionary.org/w/api.php?action=query&titles=abr%C3%A9ger&prop=iwlinks&utf8&iwprefix=en&format=jsonfm

Merci
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
26 août 2016 à 15:04
Probablement une erreur de recopie quelque part.
Sur ma machine, ça fonctionne bien !
Tape : datas['query']['pages'] et fais un copier coller de ce qu'il renvoie.
0
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
26 août 2016 à 16:27
Merci pour votre réponse.
J'ai essayé, ça me renvoie bien un résultat :
>{'2254808': {'ns': 0, 'title': 'accrassiner', 'pageid': 2254808}}</code>


Et c'est tout ce qu'il reconnaît d'une liste de titles que je souhaitais qu'il reconnaissent. Je dois avoir un problème dans ma boucle :
# mettre tous les titles dans title
for datum in data[0]['query']['categorymembers']:
    titles_0 = datum['title']
    pageids_0 = datum['pageid']
    mon_url = 'https://fr.wiktionary.org/w/api.php?action=query&titles=%s&prop=iwlinks&utf8&iwprefix=en&format=json&indexpageids=%s' % (titles_0, pageids_0)
    print(mon_url)

for datum in data[1]['query']['categorymembers']:
    titles_1 = datum['title']
    pageids_1 = datum['pageid']
    mon_url = 'https://fr.wiktionary.org/w/api.php?action=query&titles=%s&prop=iwlinks&utf8&iwprefix=en&format=json&&indexpageids=%s' % (titles_1, pageids_1)
    print(mon_url)
    
with urllib.request.urlopen(mon_url)as url:
    datas= json.loads(url.read().decode("utf8"))    


######################### Il doit récupérer tous les titles 
## Récupérer le mot traduit
print (datas['query']['pages'])
for datum in datas['query']['pages'][pageids_0]:
    title2 = datas["iwlinks"][0]['*'] # pageids entre crochets
    print(title2)  
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
27 août 2016 à 20:53
Avant de plonger dans votre code, c'est étrange que datas['query']['pages'] ne renvoie pas la clé "137227" (à moins que ton copier coller soit tronqué...).

Vérifie bien que le contenu de datas (issu du JSON) est correct.
0