IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

du JSON vers dictionnaire [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Déssinateur
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Déssinateur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Points : 9
    Points
    9
    Par défaut du JSON vers dictionnaire
    Bonjour,

    j'ai en tête un projet un peu ambitieux pour moi (car débutant) mais je pense qu'avec de l'aide j'arriverais peut être au bout.

    je vous expose mon projet, je voudrais (comme beaucoup je pense) gagner de l'argent sans rien faire, mais j'ai pas gagné au loto. Du coup je me rabat sur les chevaux et je voudrais a partir d'une page web en JSON me constituer une base de donnée que je puisse exploiter sur excel.

    question:

    est-ce que je dois importer dans un dico python puis exporter vers excel ou direct excel

    est-ce que dans le temps il vaut mieux pour moi que je sauvegarde cette base en un autre format qu'excel

    je vous met la page JSON que j'ai récupérer pour vous puissiez voir ce qui m'attend
    json.rar

    Merci de tous les conseils que vous pourrez me donner

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Je pense que tu ne peux pas procéder directement pour convertir un json en csv (que tu pourras importer dans excel).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import json
     
    with open('data.json') as f : data = json.load(f)
    Là data est en dictionnaire. A toi de voir comment il est construit et qu'est ce que tu veux mettre dans ton csv derrière (comment organiser l'info, etc ...).
    Ensuite la librairie csv te sera utile pour écrire le csv.

    Pour ce qui est de la sauvegarde de ta base de donnée, le json en est une ! Suffit de conserver le code python pour convertir à tous moment. Tu peux conserver le fichier csv, mais à priori il contiendra moins d'information que le json. Donc soit tu t'en fou des informations non présente dans le csv et là tu peux garder le csv, soit tu te dis que peut etre un jour tu aurras envie d'exploiter plus d'information et là tu seras bien content d'avoir garder le json.

    Après une question :
    Pourquoi vouloir exporter en csv derrière ? Si c'est pour regarder des courbes d'évolution ou des graphiques de statistiques (histogrammes ou autre), tu peux très bien le faire en python (regarde la librairie matplotlib)

    PS : c'est d'assez mauvais gout de nommer un json json.txt. Si c'est un json, alors il a l'extension json. Donc tu le nommes data.json ou mon_fichier.json ou truc.json par exemple mais pas json.txt !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Déssinateur
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Déssinateur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta réponse

    Pour ce qui est de la sauvegarde je vais avoir en moyenne une centaine de page en JSON par jour a récupérer donc la question se pose en terme de nombre de fichier et d’accès à ces fichiers par la suite 100x365=36 500 fichiers par an, ça va faire beaucoup.
    Du coup dans mon fichiers xlsx (le csv c'est pour excel) j'aurais 2 JSON par ligne.

    Je voudrais un fichier xl parce que derrière c'est beaucoup plus facile pour moi de faire des tri, des formules, etc enfin faire des test dans tous les sens.

    Ta remarque sur le fichier txt est judicieuse, je l'ai mis en txt car j'ai réussi a afficher le JSON dans la fenêtre Shell de python et après je l'ai collé dans un fichiers txt d'ou le txt.

    Merci de tes conseils

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Déssinateur
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Déssinateur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    bon je fais un essai

    et bien sur je sèche

    j'ai fais ça dans un premier temps et content de moi ça marche (après x essais)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import json, urllib
    import requests
    from urllib.request import urlopen
    from pprint import pprint
     
    url = ("https://www.pmu.fr/services/turfInfo/client/1/programme/01012017/")
     
    u = urlopen(url)
    data_json = json.loads(u.read().decode('utf-8'))
     
    pprint (data_json)
    puis j'ai voulus afficher une valeur du dico et la ca fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import json, urllib
    import requests
    from urllib.request import urlopen
    from pprint import pprint
     
    url = ("https://www.pmu.fr/services/turfInfo/client/1/programme/01012017/")
     
    u = urlopen(url)
    data_json = json.loads(u.read().decode('utf-8'))
     
    pprint (data_json['programme']['reunions']['numOfficiel'])
    pouvez vous me dire pourquoi?
    J'ai bien compris que "reunions" est un dico dans le dico "programme" mais pour "numOfficiel" ben je comprends pas.

  5. #5
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Ca marche pas parce que le json n'a pas la structure que tu crois qu'elle a !

    Exécute ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import json, urllib
    import requests
    from urllib.request import urlopen
    from pprint import pprint
     
    url = ("https://www.pmu.fr/services/turfInfo/client/1/programme/01012017/")
     
    u = urlopen(url)
    data_json = json.loads(u.read().decode('utf-8'))
     
    print(type(data_json))
    print(type(data_json['programme']))
    print(type(data_json['programme']['reunions']))
    print(len(data_json['programme']['reunions']))
    Là on voit bien que data_json['programme']['reunions'] n'est pas un dictionnaire !
    C'est une liste qui contient 3 éléments.

    Donc forcément si tu fais
    et que truc n'est pas un dictionnaire, ca ne peut que pas bien se passer.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Déssinateur
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Déssinateur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    ok

    Effectivement il y a une liste aussi
    Du coup je progresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    import json, urllib
    import requests
    from urllib.request import urlopen
    from pprint import pprint
     
    Re = []
    nbCo = []
     
    url = ("https://www.pmu.fr/services/turfInfo/client/1/programme/01052017/")
    u = urlopen(url)
    data_json = json.loads(u.read().decode('utf-8'))
     
    nbRe = len(data_json['programme']['reunions'])
    #print ("Nombre de réunions = ",nbRe)
     
    i = 0
    while i < nbRe:
        pays = (data_json['programme']['reunions'][i]['pays']['code'])
        if pays == "FRA":
            Re.append (i+1)
            nbCo.append(len(data_json['programme']['reunions'][i]['courses']))
            #print("Reunions=",i+1,"  Nombre de course = ",nbCo[i])
        else:
            Re.append (0)
            nbCo.append(0)
        i += 1
     
    print ("nbRe=",nbRe," Re=",Re," nbCo=",nbCo)
    j'ai récupérer le nombre de réunions et de courses par réunions sans les étrangères.

    3h de boulot pour ca, ca doit en faire marré plus d'un, mais j'avance (doucement)

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion JSON vers XML
    Par jeedev dans le forum Objective-C
    Réponses: 0
    Dernier message: 20/10/2012, 17h01
  2. [Débutant] Deserialisation Json vers object
    Par Armakorhall dans le forum C#
    Réponses: 3
    Dernier message: 27/09/2012, 08h42
  3. Parse XML/JSON vers Spinner
    Par JBusnel dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 19/09/2012, 17h41
  4. [PHP 5.3] Parser Json vers MySQL arrays & objects
    Par jack77b dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2012, 15h08
  5. Réponses: 5
    Dernier message: 14/09/2008, 23h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo