Partage
  • Partager sur Facebook
  • Partager sur Twitter

Données impossible à récupérer API "KeyError"

    14 septembre 2022 à 15:15:03

    Bonjour,

    Je récupère des données sur une API, j'arrive à tout récupérer sauf une seule information et c'est vraiment un mystère, voici les captures.

    Cela concerne le champ prixMin

    Voici l'erreur

    Merci beaucoup pour votre aide =)

    -
    Edité par JérémyDurand5 15 septembre 2022 à 19:33:22

    • Partager sur Facebook
    • Partager sur Twitter
      14 septembre 2022 à 15:34:37

      c'est mieux d'utiliser le bouton d'insertion de code </> sinon on galère si on veut recopier une partie du code

      Sinon tu devrais mieux regarder où se trouve prixMin dans l'arborescence JSON (indice, il n'est pas là où tu le cherches, suis les accolades ouvrantes/fermantes)

      • Partager sur Facebook
      • Partager sur Twitter
        14 septembre 2022 à 16:50:34

        Bonjour,

        Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
        Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

        Pour plus d'informations, nous vous invitons à lire les règles générales du forum

        Merci de colorer votre code à l'aide du bouton Code

        Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: python;">Votre code ici</pre>.

        Merci de modifier votre message d'origine en fonction.

        Mauvais titre

        Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

        Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

        De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

        Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

        Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.

        (titre originel : Problème APi simple)

        Liens conseillés

        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2022 à 18:24:08

          Merci pour la réponse mais en regardant bien, je vois toujours pas le problème.

          il n'est pas dans l'accolade coordinates ni dans ehpadPrice  et l'accolade item se ferme juste après "prixMin"

          Au niveau de l'indentation je le vois bien dans item.

          "type": "ETABLISSEMENTS",
              "distance": 0,
              "item": {
                "_id": "11741",
                "title": "EHPAD - Résidence La Pirandelle",
                "updatedAt": "2022-06-03T18:03:19.000Z",
                "coordinates": {
                  "_id": null,
                  "title": null,
                  "isPublished": null,
                  "createdAt": null,
                  "updatedAt": null,
                  "street": "6 rue Pirandello",
                  "postcode": "75013",
                  "deptcode": "75",
                  "deptname": "PARIS",
                  "city": "PARIS 13",
                  "phone": "01 45 35 26 30",
                  "emailContact": "lapirandelle@isatis.asso.fr",
                  "gestionnaire": "Association ISATIS",
                  "website": "http://www.isatis.asso.fr/hebergement/1/la-pirandelle",
                  "latitude": "48.837026",
                  "longitude": "2.356962"
                },
                "noFinesset": "750828758",
                "capacity": 85,
                "legal_status": "Privé non lucratif",
                "isViaTrajectoire": null,
                "IsEHPAD": true,
                "IsEHPA": false,
                "IsESLD": false,
                "IsRA": false,
                "IsAJA": false,
                "IsHCOMPL": true,
                "IsHTEMPO": false,
                "IsACC_JOUR": false,
                "IsACC_NUIT": false,
                "IsHAB_AIDE_SOC": true,
                "IsCONV_APL": false,
                "IsALZH": false,
                "IsUHR": false,
                "IsPASA": false,
                "IsPUV": false,
                "IsF1": false,
                "IsF1Bis": false,
                "IsF2": false,
                "ehpadPrice": {
                  "_id": "750828758",
                  "updatedAt": "2022-06-02T22:00:00.000Z",
                  "prixHebPermCs": 85.37,
                  "prixHebPermCd": null,
                  "prixHebPermCsa": 85.37,
                  "prixHebPermCda": null,
                  "prixHebTempCs": null,
                  "prixHebTempCd": null,
                  "prixHebTempCsa": null,
                  "prixHebTempCda": null,
                  "tarifHebJour": null,
                  "tarifGir12": 22.11,
                  "tarifGir34": 14.03,
                  "tarifGir56": 5.95,
                  "autrePrestation": "Marquage du linge, Prestations esthétiques de base",
                  "autreTarifPrest": "Entretien du linge du résident non délicat 40.0€/mois, Prestations de coiffure (shampoing, coupe), Prestations de pédicurie-podologie (hors prescription médicale)"
                },
                "raPrice": null,
                "cerfa": null,
                "prixMin": 2739.6000000000004
              }



          -
          Edité par JérémyDurand5 14 septembre 2022 à 18:44:35

          • Partager sur Facebook
          • Partager sur Twitter
            14 septembre 2022 à 19:16:57

            au temps pour moi, c'est moi qui ai zappé une accolade ouvrante ^^ 

            Est-ce que tu es sûr que tous les établissements ont cette clé prixMin (clé obligatoire ou pas, à voir dans la doc de l'API)? vérifie le donnees[x]['item'] de celui qui génère l'erreur.

            • Partager sur Facebook
            • Partager sur Twitter
              15 septembre 2022 à 19:22:41

              Salut,

              merci pour ta réponse, du coup j'ai simplifié mon code de test en ciblant uniquement un établissement qui contient "prixMin", toujours pareil, même erreur.

              De mon côté, je cherche encore, ce qui  est étonnant, c'est que je peux récupérer la donnée "cerfa" qui est juste avant.

              J'essaie de trouver quelqu'un qui aurait eu la même problématique sur les forums mais rien de concluant pour le moment.

              -
              Edité par JérémyDurand5 15 septembre 2022 à 19:29:06

              • Partager sur Facebook
              • Partager sur Twitter
                15 septembre 2022 à 19:28:57

                @JérémyDurand5 Bonjour, merci de modifier le titre de votre sujet comme demandé, pour un titre descriptif de votre problématique. Évitez les titres avec "problème", si vous postez on se doute que vous avez un problème, l'indiquer dans le titre n'apporte rien de plus comme information quand au contenu du sujet.

                La modération

                • Partager sur Facebook
                • Partager sur Twitter
                  15 septembre 2022 à 19:29:04

                  un lien vers l'api en question et sa doc  ?  pour qu'on puisse regarder nous aussi et la requête que tu fais (sans ton token si token il y a)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 septembre 2022 à 19:50:42

                    celui a bien un prixMin, mais il y en a d'autres qui n'ont pas ce champ (l'établissement 11604 n'a pas ce champ); comme tu parcours l'ensemble des résultats, tu tombes sur un établissement avant celui que tu cherches qui n'a pas ce champ et donc te génères l'erreur

                    tu peux éviter l'erreur en testant la présence de cette clé dans donnees[x]['item'] et avant d'y accéder. ou alors vérifier le numéro de l'établissement avant.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 septembre 2022 à 19:58:25

                      ha mais je pensais pas que le fait d'initialiser la variable pouvait causer l'erreur dans le cas ou elle n'existerait pas.

                      je pensai que si il y avait un bug c'était dans le cas ou je l'aurai utilisé.

                      Du coup j'ai fait un try:

                      try:
                                  etablissements_prix = donnees[x]['item']['prixMin']
                                  if etablissements_prix:
                                      
                                      print(etablissements_prix)
                              except:
                                  print('problem')

                      Penses tu que c'est une solution propre ? (en tout cas ça fonctionne)

                      -
                      Edité par JérémyDurand5 15 septembre 2022 à 20:04:09

                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 septembre 2022 à 2:28:38

                        Et ceci?
                                    if 'prixMin'in donnees[x]['item']:
                                        etablissements_prix = donnees[x]['item']['prixMin']
                                    else:
                                        # C'est une erreur
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Le Tout est souvent plus grand que la somme de ses parties.

                          16 septembre 2022 à 11:22:14

                          Je serais plus pour le code de PierrotLeFou, avec dans le else, éventuellement, un print(f"L'établissement {x} n'a pas de prix min"
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Données impossible à récupérer API "KeyError"

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          • Editeur
                          • Markdown