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 :

Découper un fichier json en fonction d'une donnée précise [Python 2.X]


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Points : 32
    Points
    32
    Par défaut Découper un fichier json en fonction d'une donnée précise
    Bonjour tout le monde,

    Alors je souhaiterais récupérer des données en particulier dans mon fichier json en fonction d'un champ json.

    Voici mon fichier json :

    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
     
    "service": [
        {
            "number": "1",
            "source": [
                 {"object": "Valeur-referente" }
                ,{"object": "Valeur-referente2" }
            ],
            "services": [
                {"layer3": "Any" }
        }
    ]
    "valeur": [
        {
            "number": "1",
            "orig_from": "Valeur-referente",
            "orig_to": "Valeur-referente2",
            "from": "172.X.X.X",
            "to": "10.X.X.X",
     
            "comment": "Ceci est un test"
        }
    ]
    La finalité de mon idée serait de récupérer le "Any", il s'agit de la valeur de "layer3" présent dans ["service"]["services"]["layer3"] mais il y a quelques conditions.

    Il faudrait d'abord regarder tous les "to" commencant par "10." dans ["valeur"]["to"] . Ensuite de prendre les valeurs de "orig_from" et de "orig_to" dans ["valeur"]["orig_from"] pour qu'ils correspondent à ["service"]["source"]["object"] comme ici "Valeur-referente".

    A la fin, je vais faire un fichier regroupant la valeur de "to" avec la valeur de "orig_from" ou de "orig_to" ainsi que la valeur de "layer3".

    J'ai un peu de mal avec l'écriture de programme python en json, d'où ma demande d'aide.

    Merci d'avanc

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2018
    Messages : 16
    Points : 88
    Points
    88
    Par défaut
    salut
    ton json est non conforme
    tu peux utiliser ce genre de service web si tu as un doute
    https://jsonformatter.curiousconcept.com/


    un code de base pour la lecture json
    attention c'est du code python3 mais a part le print ce change pas grande chose.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import json
    jsonfile = "chemindetonfichier.json"
     
    with open(jsonfile) as json_data:
        d = json.load(json_data)
        print(d['valeur'][0]['to'])
    renvoie => 10.X.X.X

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     print(d['service'][0]['source'][1]['object'])
    renvoie => Valeur-referente2



    avec cette base de départ tu devrais arriver à faire tout les tests qui tu as besoin

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    Merci pour ta réponse

    Voici le json modifié :

    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
     
    {
       "service":[
          {
             "number":"1",
             "source":[
                {
                   "object":"Valeur-referente"
                },
                {
                   "object":"Valeur-referente2"
                }
             ],
             "services":[
                {
                   "layer3":"Any"
                }
             ]
          }
       ],
       "valeur":[
          {
             "number":"1",
             "orig_from":"Valeur-referente",
             "orig_to":"Valeur-referente2",
             "from":"172.X.X.X",
             "to":"10.X.X.X",
             "comment":"Ceci est un test"
          }
       ]
    }
    Merci pour ton code, le truc c'est qu'il me récupère la totalité des champs "to", or je souhaiterais récupéré les valeurs commençant pa 10. + quelque chose (adresse ip). Le truc c'est que je n'arrive pas à créer un intervalle de 10.0.0.0 jusqu'à 10.255.255.255.

    Tu as une solution ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 364
    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 364
    Points : 36 896
    Points
    36 896
    Par défaut
    Salut,

    Citation Envoyé par Xam29870 Voir le message
    le truc c'est qu'il me récupère la totalité des champs "to", or je souhaiterais récupéré les valeurs commençant pa 10. + quelque chose (adresse ip). L
    Tester si la chaîne de caractère commence par... se fait simplement avec la méthode .startswith.

    - W

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    Merci pour votre aide !

    Bonne journée !

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

Discussions similaires

  1. Appeler une fonction quand une donnée MySQL change
    Par ApocKalipsS dans le forum Langage
    Réponses: 7
    Dernier message: 28/02/2010, 17h24
  2. Rechercher un fichier ayant une donnée précise
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 13/05/2009, 08h13
  3. Ouvrir un form en fonction d'une donnée
    Par AndréPe dans le forum IHM
    Réponses: 3
    Dernier message: 06/11/2007, 10h36
  4. Modifier l'État en fonction d'une donnée dans la base
    Par Pyrocyborg dans le forum Access
    Réponses: 1
    Dernier message: 30/06/2006, 18h40
  5. [FOP] Changer le bckground en fonction d'une donnée
    Par lasconic dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/02/2005, 16h59

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