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 :

json file to list or dict [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Agronome é la retraite
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Agronome é la retraite
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 9
    Points
    9
    Par défaut json file to list or dict
    Bonjour la compagnie,
    Je dois traiter les données d'une installation photovoltaique gérée par outback power qui me fournir des centaines de fichiers .json plutôt complexe (voir citation en bas de message)

    Impossible d'en extraire directement un élément par exemple my_data[18:27] car les données après les ":" sont de longueur variable.
    Je peux avoir ce que je veux en cherchant par ex. "SOC" puis "Min_SOC" (en gras ci-dessous) et en excisant ce qu'il faut du résultat, mais c'est brutal et lent. J'ai bricolé avec les dump ou loads je n'arrive à rien.
    Une orientation svp pour me permettre de continuer à chercher?
    Merci

    my_data.json=
    {"devstatus": {
    "Sys_Time": 1378670602,
    "Sys_Batt_V": 24.6,
    "ports": [
    { "Port": 1, "Dev": "FX","Type": "230V","Inv_I": 0,"Chg_I": 0,"Buy_I": 0,"Sell_I": 0,"VAC_in": 8,"VAC_out": 228,"Batt_V": 24.6,"AC_mode": "NO AC","INV_mode": "Inverting","Warn": ["none"],"Error": ["none"],"AUX": "disabled"},
    { "Port": 2, "Dev": "CC","Type": "FM","Out_I": 0.0,"In_I": 0,"Batt_V": 24.8,"In_V": 16.2,"Out_kWh": 2.6,"Out_AH": 101,"CC_mode": "Silent","Error": ["none"],"Aux_mode": "Manual","AUX": "disabled"},
    { "Port": 4, "Dev": "FNDC","Enabled": ["A","B"],"Shunt_A_I": -8.9,"Shunt_A_AH": -524,"Shunt_A_kWh": -13.000,"Shunt_B_I": 0.1,"Shunt_B_AH": 427,"Shunt_B_kWh": 11.100,"SOC": 90,"Min_SOC": 87,"Days_since_full": 3.2,"CHG_parms_met": false,"In_AH_today": 118,"Out_AH_today": 118,"In_kWh_today": 3.020,"Out_kWh_today": 2.940,"Net_CFC_AH": -122,"Net_CFC_kWh": -2.570,"Batt_V": 24.6,"Batt_temp": "17 C","Aux_mode": "manual","AUX": "enabled"}
    ]}}

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    C'est le genre d'exercice ou la console Python est très utile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> my_data = '''{"devstatus": {
    ... "Sys_Time": 1378670602,
    ... "Sys_Batt_V": 24.6,
    ... "ports": [
    ...  ...
    Aux_mode": "manual","AUX": "enabled"}
    ... ]}}'''
    >>> import json
    >>> d = json.loads(my_data)
    Ensuite, il faut visualiser la structure des données:
    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
    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
    >>> import pprint
    >>> pprint.pprint(d)
    {'devstatus': {'Sys_Batt_V': 24.6,
                   'Sys_Time': 1378670602,
                   'ports': [{'AC_mode': 'NO AC',
                              'AUX': 'disabled',
                              'Batt_V': 24.6,
                              'Buy_I': 0,
                              'Chg_I': 0,
                              'Dev': 'FX',
                              'Error': ['none'],
                              'INV_mode': 'Inverting',
                              'Inv_I': 0,
                              'Port': 1,
                              'Sell_I': 0,
                              'Type': '230V',
                              'VAC_in': 8,
                              'VAC_out': 228,
                              'Warn': ['none']},
                             {'AUX': 'disabled',
                              'Aux_mode': 'Manual',
                              'Batt_V': 24.8,
                              'CC_mode': 'Silent',
                              'Dev': 'CC',
                              'Error': ['none'],
                              'In_I': 0,
                              'In_V': 16.2,
                              'Out_AH': 101,
                              'Out_I': 0.0,
                              'Out_kWh': 2.6,
                              'Port': 2,
                              'Type': 'FM'},
                             {'AUX': 'enabled',
                              'Aux_mode': 'manual',
                              'Batt_V': 24.6,
                              'Batt_temp': '17 C',
                              'CHG_parms_met': False,
                              'Days_since_full': 3.2,
                              'Dev': 'FNDC',
                              'Enabled': ['A', 'B'],
                              'In_AH_today': 118,
                              'In_kWh_today': 3.02,
                              'Min_SOC': 87,
                              'Net_CFC_AH': -122,
                              'Net_CFC_kWh': -2.57,
                              'Out_AH_today': 118,
                              'Out_kWh_today': 2.94,
                              'Port': 4,
                              'SOC': 90,
                              'Shunt_A_AH': -524,
                              'Shunt_A_I': -8.9,
                              'Shunt_A_kWh': -13.0,
                              'Shunt_B_AH': 427,
                              'Shunt_B_I': 0.1,
                              'Shunt_B_kWh': 11.1}]}}
    Et calculer comment adresser la donnée intéressante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> d['devstatus']['ports'][2]['Min_SOC']
    87
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Agronome é la retraite
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Agronome é la retraite
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 9
    Points
    9
    Par défaut merci
    Viel Danken WitzTrick
    Je ne conaissais pas PPrint, on en apprend tous les jours!
    Lionel

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

Discussions similaires

  1. Json.net et List
    Par iguins dans le forum Windows Phone
    Réponses: 2
    Dernier message: 24/03/2013, 13h16
  2. JSON - Envoyer une liste d'objets au controller MVC 2
    Par blasil64 dans le forum ASP.NET Ajax
    Réponses: 0
    Dernier message: 13/12/2012, 09h32
  3. Réponses: 2
    Dernier message: 05/10/2011, 23h39
  4. plugin Jeditable, insérer un date-json dans la liste
    Par microJaP dans le forum jQuery
    Réponses: 2
    Dernier message: 19/04/2011, 21h50
  5. implementer une file avec liste chainée
    Par sub-0 dans le forum Débuter
    Réponses: 2
    Dernier message: 12/01/2009, 00h59

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