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] transformation json en format "lisible" [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Par défaut [json] transformation json en format "lisible"
    Bonjour à tous,

    Je suis un utilisateur plutot débutant en Python mais je dois transformer un fichier json plutot complexe ( pour moi ).
    Il y a pas mal d'informations à ce sujet sur internet mais je n'arrive pas à adapter les exemples à ma structure de données.
    Pourriez-vous me donner des pistes, conseils, pour transformer la structure json en données simples comme ci dessous ?
    J'utilise le Python 3.5.3 et le module json

    Sortie souhaité en texte:
    Start, End, Account, Amount
    2020-01-01, 2020-02-01, 111111111122, 1212.93
    2020-01-01, 2020-02-01, 111111111145, 258.47
    2020-01-01, 2020-02-01, 555558555543, 744.58
    2020-02-01, 2020-03-02, 444433334444, 2254.70
    2020-02-01, 2020-03-02, 345345345345, 1235.70

    json.txt :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    {
        "GroupDefinitions": [
            {
                "Type": "DIMENSION",
                "Key": "LINKED_ACCOUNT"
            }
        ],
        "ResultsByTime": [
            {
                "TimePeriod": {
                    "Start": "2020-01-01",
                    "End": "2020-02-01"
                },
                "Total": {},
                "Groups": [
                    {
                        "Keys": [
                            "111111111122"
                        ],
                        "Metrics": {
                            "UnblendedCost": {
                                "Amount": "1212.93",
                                "Unit": "USD"
                            }
                        }
                    },
                    {
                        "Keys": [
                            "111111111145"
                        ],
                        "Metrics": {
                            "UnblendedCost": {
                                "Amount": "258.47",
                                "Unit": "USD"
                            }
                        }
                    },
                    {
                        "Keys": [
                            "555558555543"
                        ],
                        "Metrics": {
                            "UnblendedCost": {
                                "Amount": "744.58",
                                "Unit": "USD"
                            }
                        }
                    }
                ],
                "Estimated": false
            },
            {
                "TimePeriod": {
                    "Start": "2020-02-01",
                    "End": "2020-03-01"
                },
                "Total": {},
                "Groups": [
                    {
                        "Keys": [
                            "444433334444"
                        ],
                        "Metrics": {
                            "UnblendedCost": {
                                "Amount": "2254.70",
                                "Unit": "USD"
                            }
                        }
                    },
                    {
                        "Keys": [
                            "345345345345"
                        ],
                        "Metrics": {
                            "UnblendedCost": {
                                "Amount": "1235.70",
                                "Unit": "USD"
                            }
                        }
                    }
                ],
                "Estimated": false
            }
        ]
    }

    Merci à vous !

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    C'est une structure "compliquée" dans laquelle il faut naviguer pas à pas, histoire de s'y retrouver.
    Le plus simple est de lancer l’interpréteur Python et de jouer avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> import json
    >>> z = json.load(data)
    z est un dictionnaire avec 2 clefs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> list(z.keys())
    ['GroupDefinitions', 'ResultsByTime']
    puis on peut commencer par afficher, les éléments de cette liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> for e in z['ResultsByTime']:
    ...     print(e['TimePeriod'])
    ...
    {'Start': '2020-01-01', 'End': '2020-02-01'}
    {'Start': '2020-02-01', 'End': '2020-03-01'}
    >>>
    Les autres données sont dans "Groups":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> for e in z['ResultsByTime']:
    ...     print(e['Groups'])
    ...
    [{'Keys': ['111111111122'], 'Metrics': {'UnblendedCost': {'Amount': '1212.93', '
    Unit': 'USD'}}}, {'Keys': ['111111111145'], 'Metrics': {'UnblendedCost': {'Amoun
    t': '258.47', 'Unit': 'USD'}}}, {'Keys': ['555558555543'], 'Metrics': {'Unblende
    dCost': {'Amount': '744.58', 'Unit': 'USD'}}}]
    [{'Keys': ['444433334444'], 'Metrics': {'UnblendedCost': {'Amount': '2254.70', '
    Unit': 'USD'}}}, {'Keys': ['345345345345'], 'Metrics': {'UnblendedCost': {'Amoun
    t': '1235.70', 'Unit': 'USD'}}}]
    >>>
    Puis une fois que vous avez une idée plus précise pour accéder aux différentes données, vous pouvez commencer à coder (mais comme tous les JSON sont différents, il faut adapter à chaque cas).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Par défaut
    Merci beaucoup, votre réponse m'a permis de bien avancer dans mon script.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/10/2015, 23h40
  2. Utilisation du format $quote
    Par lhonolulu dans le forum SAS Base
    Réponses: 5
    Dernier message: 25/05/2009, 11h06

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