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 :

Correspondance entre du texte et des données


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 Correspondance entre du texte et des données
    Bonjour,

    j'aimerais faire correspondre du texte d'un fichier avec des données d'un autre fichier.

    En gros, à partir d'un fichier texte (ci-dessous), j'aimerais que la partie ("idBatiment" : Volume) du fichier ne soit pas juste du texte mais qu'il corresponde à des données.

    [
    {
    "identification": {
    "producer": "<reseau>"
    },
    "coordinates": {
    "timestamp": "1512479309"
    },
    "meta": {
    "name": "<consoBatiment>",
    "tags": {
    }
    },
    "values": {
    "idBatiment" : Volume,
    }
    }
    ]


    Ses données sont de la forme :

    094200 39.04&nbsp;MB
    095500 58.79&nbsp;MB
    053700 27.46&nbsp;MB
    082000 70.58&nbsp;MB
    073800 26.95&nbsp;MB
    096200 216.76&nbsp;MB
    075100 14.48&nbsp;MB
    052300 27.02&nbsp;MB
    058700 19.22&nbsp;MB
    058300 15.43&nbsp;MB
    052800 35.13&nbsp;MB
    018000 15.29&nbsp;MB
    000000 16.13&nbsp;MB
    060500 1.10&nbsp;KB
    060600 1.10&nbsp;KB
    061600 1.09&nbsp;KB
    063300 1.04&nbsp;KB
    063500 1.10&nbsp;KB

    La première colonne du fichier ci-dessus correspond à l'idBatiment du premier fichier et la deuxième colonne du fichier ci-dessus correspond au Volume du premier fichier.

    Est-ce possible de faire correspondre le texte du fichier 1 avec les données du fichier 2 ? Si oui, pouvez-vous m'aider à faire correspondre le texte du premier fichier "idBatiment" : Volume avec les données du deuxième fichier ?

    Merci d'avance et bonne journée !

    PS : je débute en python

  2. #2
    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
    J'ai besoin de remplacer le texte par les données, personne ne peut m'aider ?

    J'ai essayer en ouvrant le fichier en lecture et en faisant un .replace sur le texte pour le remplacer par les données mais il n'y a que la première ou la dernière donnée qui est inscrite à la place du texte.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour

    Montre nous ton code et précise un peu ce que tu attend en résultat. J'ai du mal à comprendre comment tu fais le rapprochement ?
    Le savoir est une arme alors soyons armés

  4. #4
    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
    Mon code pour le moment :

    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
     
     
    # ouverture du fichier avec le format
    s = open("fichier_tmp3","r")
     
    #ouverture du fichier contenant les donnees
    t = open("fichier-donnee","r")
     
     
    for line in s:
     
     
    	for ligne in t:
    		#Divise le fichier des donnees en 2 parties grace a l'espace	
    		ligne = ligne.rstrip().split(" ")
    		#affiche l'id : la valeur
    		print ligne[1]	+ " : " + ligne[2]		
     
    	#Remplace le texte par les donnees
    	line = line.replace(' "idCaisse" : Volume, ', ligne[1] + " : " + ligne[2] )
    	print line 
     
     
    s.close()
    t.close()









    Voici le resultat :

    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
     
     
    056100 : 386578513.92
    058400 : 230235832.32
    051600 : 286103961.6
    051800 : 214349905.92
    052300 : 271130296.32
    094200 : 262206914.56
    075800 : 207953592.32
    052800 : 280903024.64
    053000 : 179589611.52
    053700 : 260308992.0
    058900 : 117220311.04
    061600 : 101659443.2
    082000 : 267932139.52
    050500 : 77825310.72
    000000 : 121372672.0
    [ 
     
      { 
     
        "identification": {  
     
         "producer": "<network.infra>"  
     
        }, 
     
        "coordinates": { 
     
          "timestamp": "1512479309"  
     
        }, 
     
        "meta": { 
     
          "name": "<squid.conso.caisse>", 
     
          "tags": { 
     
          } 
     
        }, 
     
        "values": { 
     
        000000 : 121372672.0
     
        } 
     
      } 
     
    ]








    Donc la valeur 000000 : 121372672.0 est la dernière donnée récupérée et c'est la seule que j'arrive à afficher, j'aimerais afficher en gros :


    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
     
     
    [ 
     
      { 
     
        "identification": {  
     
         "producer": "<network.infra>"  
     
        }, 
     
        "coordinates": { 
     
          "timestamp": "1512479309"  
     
        }, 
     
        "meta": { 
     
          "name": "<squid.conso.caisse>", 
     
          "tags": { 
     
          } 
     
        }, 
     
        "values": { 
        056100 : 386578513.92
        058400 : 230235832.32
        051600 : 286103961.6
        051800 : 214349905.92
        052300 : 271130296.32
        094200 : 262206914.56
        075800 : 207953592.32
        052800 : 280903024.64
        053000 : 179589611.52
        053700 : 260308992.0
        058900 : 117220311.04
        061600 : 101659443.2
        082000 : 267932139.52
        050500 : 77825310.72
        000000 : 121372672.0
     
        } 
     
      } 
     
    ]

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Je ne comprend toujours pas le rapprochement mais peut importe

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for ligne in t:
    	#Divise le fichier des donnees en 2 parties grace a l'espace	
    	ligne = ligne.rstrip().split(" ")
    	#affiche l'id : la valeur
    	print ligne[1]	+ " : " + ligne[2]		
     
    #Remplace le texte par les donnees
    line = line.replace(' "idCaisse" : Volume, ', ligne[1] + " : " + ligne[2] )
    print line

    Au niveau du replace; ligne[1] et ligne[2] ont pour valeur la dernière du fichier (car tu fais le replace hors de la boucle)

    Je pense qu'il suffit de cumuler les données (dans une liste ou bien en concaténant) et appliquer le replace à ce cumul et tu auras ce que tu veux
    Le savoir est une arme alors soyons armés

  6. #6
    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
    Un truc comme ça ? :

    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
     
     
    for line in s:
     
     
    	for ligne in t:
    		#Divise le fichier des donnees en 2 parties grace a l'espace	
    		ligne = ligne.rstrip().split(" ")
    		#affiche l'id : la valeur
    		print ligne[1]	+ " : " + ligne[2]
    		tableau1 = []
    		tableau1.append(ligne[1]) 
    		tableau2 = []
    		tableau2.append(ligne[2])		
     
    		#Remplace le texte par les valeurs
    		line = line.replace(' "idCaisse" : Volume, ', str(tableau1) + " : " + str(tableau2))
    		print line

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Pas tout à fait

    là tu as remis le replace dans la boucle qui lis les données du fichier de données
    Attention à l'indentation en python
    De plus, tableau1 et 2 sont redéfis à chaque boucle donc on perd les données

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    for line in s:
     
        tableau = []
    	for ligne in t:
    		#Divise le fichier des donnees en 2 parties grace a l'espace	
    		ligne = ligne.rstrip().split(" ")
    		#affiche l'id : la valeur
    		print ligne[1]	+ " : " + ligne[2]
     
    		tableau1.append(ligne[1] + " : " + ligne[2]) 
     
        #Remplace le texte par les valeurs
        line = line.replace(' "idCaisse" : Volume, ', "\n".join(tableau))
        print line
    Le savoir est une arme alors soyons armés

  8. #8
    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 de la réponse

    J'ai donc remplacé ce que j'ai fais par ton 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    # ouverture du fichier avec le format
    s = open("fichier_tmp3","r")
     
    #ouverture du fichier contenant les donnees
    t = open("fichier-donnee","r")
     
     
    for line in s:
     
     	tableau = []
    	for ligne in t:
    		#Divise le fichier des donnees en 2 parties grace a l'espace	
    		ligne = ligne.rstrip().split(" ")
    		#affiche l'id : la valeur
    		print ligne[1]	+ " : " + ligne[2]
     
    		tableau.append(ligne[1] + " : " + ligne[2]) 
     
        	#Remplace le texte par les valeurs
        	line = line.replace(' "idCaisse" : Volume, ', "\n".join(tableau))
        	print line
     
     
    s.close()
    t.close()


    Le problème c'est maintenant toutes les données sont inscrites avant et il y a une partie blanche à la place du texte à remplacer

    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
     
     
    056100 : 386578513.92
    058400 : 230235832.32
    051600 : 286103961.6
    051800 : 214349905.92
    052300 : 271130296.32
    094200 : 262206914.56
    075800 : 207953592.32
    052800 : 280903024.64
    053000 : 179589611.52
    053700 : 260308992.0
    058900 : 117220311.04
    061600 : 101659443.2
    082000 : 267932139.52
    050500 : 77825310.72
    000000 : 121372672.0
    [ 
     
      { 
     
        "identification": {  
     
         "producer": "<network.infra>"  
     
        }, 
     
        "coordinates": { 
     
          "timestamp": "1512479309"  
     
        }, 
     
        "meta": { 
     
          "name": "<squid.conso.caisse>", 
     
          "tags": { 
     
          } 
     
        }, 
     
        "values": { 
     
     
     
        } 
     
      } 
     
    ]

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour


    Ce que tu vois est le résultat du premier print
    print ligne[1] + " : " + ligne[2]
    Pour moi, tu faisais ce print uniquement pour vérification ...


    Sinon il y a des incohérences entre tes posts

    dans ton premier post, tu nous donnais la structure du fichier tmp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "values": {
    "idBatiment" : Volume,
    }

    Ensuite tu nous donne un code avec un replace
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    line = line.replace(' "idCaisse" : Volume, ', ligne[1] + " : " + ligne[2] )

    c'est idBatiment ou idCaisse ?

    J'ai surement mal compris une partie de la problématique
    Le savoir est une arme alors soyons armés

  10. #10
    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
    Effectivement, je m'étais trompé au niveau du texte, donc en gros au niveau de la problématique. C'est de pouvoir mettre ces données là :

    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
     
    058400 230235832.32
    051600 286103961.6
    051800 214349905.92
    052300 271130296.32
    094200 262206914.56
    075800 207953592.32
    052800 280903024.64
    053000 179589611.52
    053700 260308992.0
    058900 117220311.04
    061600 101659443.2
    082000 267932139.52
    050500 77825310.72
    000000 121372672.0
    à la place de ce texte là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "idCaisse" : Volume
    à partir de ce format là :

    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
     
    [ 
      { 
        "identification": {  
         "producer": "<network.infra>"  
        }, 
        "coordinates": { 
          "timestamp": "1512479309"  
        }, 
        "meta": { 
          "name": "<squid.conso.caisse>", 
          "tags": { 
          } 
        }, 
        "values": { 
         "idCaisse" : Volume, 
        } 
      } 
    ]
    de tels sortes que le résultat soit :

    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
     
    [ 
      { 
        "identification": {  
         "producer": "<network.infra>"  
        }, 
        "coordinates": { 
          "timestamp": "1512479309"  
        }, 
        "meta": { 
          "name": "<squid.conso.caisse>", 
          "tags": { 
          } 
        }, 
        "values": { 
         058400 : 230235832.32,
         051600 : 286103961.6,
         051800 : 214349905.92,
         052300 : 271130296.32,
         094200 : 262206914.56,
         075800 : 207953592.32,
         052800 : 280903024.64,
         053000 : 179589611.52,
         053700 : 260308992.0,
         058900 : 117220311.04,
         061600 : 101659443.2,
         082000 : 267932139.52,
         050500 : 77825310.72,
         000000 : 121372672.0, 
        } 
      } 
    ]
    Et dont voici le code actuellement :

    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
     
    # ouverture du fichier avec le format
    s = open("fichier_tmp3","r")
     
    #ouverture du fichier contenant les donnees
    t = open("fichier-donnee","r")
     
     
    for line in s:
     
     	tableau = []
    	for ligne in t:
    		#Divise le fichier des donnees en 2 parties grace a l'espace	
    		ligne = ligne.rstrip().split(" ")
    		#affiche l'id : la valeur
    		print ligne[1]	+ " : " + ligne[2]
     
    		tableau.append(ligne[1] + " : " + ligne[2]) 
     
        	#Remplace le texte par les valeurs
        	line = line.replace(' "idCaisse" : Volume, ', "\n".join(tableau))
        	print line
     
     
    s.close()
    t.close()

  11. #11
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    ton "fichier texte" vu d'ici c'est du json, donc si on considère qu'on part d'un fichier fichier.txt comme celui là :
    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
    [
       {
          "identification": {
             "producer": "<reseau>"
          },
          "coordinates": {
             "timestamp": "1512479309"
          },
          "meta": {
             "name": "<consoBatiment>",
             "tags": {
             }
          },
          "values": {
          }
       }
    ]
    et d'un fichier datas.txt comme celui là :
    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
    094200 39.04 MB
    095500 58.79 MB
    053700 27.46 MB
    082000 70.58 MB
    073800 26.95 MB
    096200 216.76 MB
    075100 14.48 MB
    052300 27.02 MB
    058700 19.22 MB
    058300 15.43 MB
    052800 35.13 MB
    018000 15.29 MB
    000000 16.13 MB
    060500 1.10 KB
    060600 1.10 KB
    061600 1.09 KB
    063300 1.04 KB
    063500 1.10 KB
    on peut simplement écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import json
    >>> with open('fichier.txt', 'r') as f: fichier = json.load(f)
    >>> with open('datas.txt',   'r') as f:   datas = dict([line.rstrip().split(' ', 1) for line in f])
    >>> fichier[0]['values'].update(datas)
    et le résultat :
    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
    [{u'coordinates': {u'timestamp': u'1512479309'},
      u'identification': {u'producer': u'<reseau>'},
      u'meta': {u'name': u'<consoBatiment>', u'tags': {}},
      u'values': {'000000': '16.13 MB',
                  '018000': '15.29 MB',
                  '052300': '27.02 MB',
                  '052800': '35.13 MB',
                  '053700': '27.46 MB',
                  '058300': '15.43 MB',
                  '058700': '19.22 MB',
                  '060500': '1.10 KB',
                  '060600': '1.10 KB',
                  '061600': '1.09 KB',
                  '063300': '1.04 KB',
                  '063500': '1.10 KB',
                  '073800': '26.95 MB',
                  '075100': '14.48 MB',
                  '082000': '70.58 MB',
                  '094200': '39.04 MB',
                  '095500': '58.79 MB',
                  '096200': '216.76 MB'}}]

  12. #12
    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
    Salut, merci de ta réponse

    J'ai un fichier "fichier.txt" contenant le json équivalent au tien. J'ai un fichier datas.txt contenant mes données équivalent au tien et j'ai mon code qui est presque équivalent au tien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    import json as simplejson
     
    with open('fichier_tmp3', 'r') as f: fichier = simplejson.load(f)
    with open('datas.txt',    'r') as f: datas = dict([line.rstrip().split(' ', 1) for line in f])
     
    test = fichier[0]['values'].update(datas)
    print test

    Cependant j'ai une erreur : ValueError: dictionary update sequence element #0 has length 1; 2 is required

    Tu as moyen de m'aider ? Le résultat que tu as obtenu, est exactement ce que j'ai envie d'avoir !

  13. #13
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Xam29870 Voir le message
    Cependant j'ai une erreur : ValueError: dictionary update sequence element #0 has length 1; 2 is required

    Tu as moyen de m'aider ? Le résultat que tu as obtenu, est exactement ce que j'ai envie d'avoir !
    difficile à dire, au delà de la recopie du code il convient d'investiguer et voir la tête des données (avec json.dumps() ou pprint.pprint() par exemple)
    si j'ai reprécisé le contenu des fichiers c'est justement parce que le tiens contenait quelques erreurs à l'origine, idem pour le fichier de données pour lequel j'avais convertit les &nbsp; en espaces
    c'est donc à adapter plus qu'à recopier, en fonction du format réel de tes fichiers et de leurs spécificités

  14. #14
    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
    C'est pour cela que j'ai modifié mes fichiers pour faire en sorte qu'ils soient équivalent au tiens

    Je vais essayer de résoudre le problème du coup.

    Le truc c'est qu'à partir de ton premier post, j'ai crée exactement les même fichiers que toi. Et lorsque j'ai lancé le programme, ça n'a rien fait. J'ai donc modifié ta ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fichier[0]['values'].update(datas)
    en ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    test = fichier[0]['values'].update(datas)
     
    print test
    et là, ça me retourne "None", je pensais que ça allait m'afficher le résultat de ton premier post.

  15. #15
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Xam29870 Voir le message
    ça me retourne "None", je pensais que ça allait m'afficher le résultat de ton premier post.
    non, c'est plutôt un print fichier qu'il faut faire dans ce cas, ta variable test vaudra toujours None

  16. #16
    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 beaucoup pour ton aide, ça marche bien, il me reste plus qu'à mettre en forme.

    Parce que ça me donne un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [{u'values': {'058300': '15.43 MB', '052800': '35.13 MB', '058700': '19.22 MB', '060600': '1.10 KB', '060500': '1.10 KB', '018000': '15.29 MB', '061600': '1.09 KB', '063300': '1.04 KB', '082000': '70.58 MB', '063500': '1.10 KB', '096200': '216.76 MB', '073800': '26.95 MB', '075100': '14.48 MB', '052300': '27.02 MB', '000000': '16.13 MB', '094200': '39.04 MB', '095500': '58.79 MB', '053700': '27.46 MB'}, u'meta': {u'name': u'<squid.conso.caisse>', u'tags': {}}, u'identification': {u'producer': u'<network.infra>'}, u'coordinates': {u'timestamp': u'1512479309'}}]
    Donc c'est un poil différent du format de base en terme de mise en forme

  17. #17
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Xam29870 Voir le message
    il me reste plus qu'à mettre en forme.
    à ce stade le bon réflexe à avoir c'est d'aller lire la doc du module incriminé:

    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
    >>> with open('nouveau.txt', 'w') as f:
    ...    json.dump(fichier, f, indent=3, sort_keys=True)
     
    >>> print json.dumps(fichier, indent=3, sort_keys=True)
    [
       {
          "coordinates": {
             "timestamp": "1512479309"
          },
          "identification": {
             "producer": "<reseau>"
          },
          "meta": {
             "name": "<consoBatiment>",
             "tags": {}
          },
          "values": {
             "000000": "16.13 MB",
             "018000": "15.29 MB",
             "052300": "27.02 MB",
             "052800": "35.13 MB",
             "053700": "27.46 MB",
             "058300": "15.43 MB",
             "058700": "19.22 MB",
             "060500": "1.10 KB",
             "060600": "1.10 KB",
             "061600": "1.09 KB",
             "063300": "1.04 KB",
             "063500": "1.10 KB",
             "073800": "26.95 MB",
             "075100": "14.48 MB",
             "082000": "70.58 MB",
             "094200": "39.04 MB",
             "095500": "58.79 MB",
             "096200": "216.76 MB"
          }
       }
    ]
    (note la différence entre json.dump() et json.dumps())

  18. #18
    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 beaucoup, ça marche parfaitement !

    En te souhaitant une bonne journée.

  19. #19
    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
    Salut,

    désolé de remettre le sujet en non-résolu, j'ai encore une petite question.

    J'aurais voulu faire en sorte d'avoir un format comme ça :

    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
     
    [
       {
          "coordinates": {
             "timestamp": "1512479309"
          },
          "identification": {
             "producer": "<reseau>"
          },
          "meta": {
             "name": "<consoBatiment>",
             "tags": {
             "Caisse": "000000"
             }
          },
          "values": {
             'default": 16.13
          }
       }
    ]
    à partir 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
     
    094200 39.04 MB
    095500 58.79 MB
    053700 27.46 MB
    082000 70.58 MB
    073800 26.95 MB
    096200 216.76 MB
    075100 14.48 MB
    052300 27.02 MB
    058700 19.22 MB
    058300 15.43 MB
    052800 35.13 MB
    018000 15.29 MB
    000000 16.13 MB
    060500 1.10 KB
    060600 1.10 KB
    061600 1.09 KB
    063300 1.04 KB
    063500 1.10 KB
    et pouvoir faire un fichier JSON, par paire de données, donc le fichier JSON suivant serait :
    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
     
    [
       {
          "coordinates": {
             "timestamp": "1512479309"
          },
          "identification": {
             "producer": "<reseau>"
          },
          "meta": {
             "name": "<consoBatiment>",
             "tags": {
             "Caisse": "018000"
             }
          },
          "values": {
             'default": 15.29
          }
       }
    ]
    Et j'aimerais ne pas avoir de " " pour la valeur default.

    Désolé encore du dérangement et merci d'avance pour la / les réponse(s)

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour,


    Avec l'utilisation de json et le code suggéré par BufferBob, datas est un dictionnaire avec pour clé la première colonne du fichier de donnée et en valeur la seconde
    Tu peux donc itérer dessus et compléter "values" et "tags" comme bon te semble (fichier[0] est lui aussi un dictionnaire et "values" et "tags" sont des clés de dictionnaire)
    Le savoir est une arme alors soyons armés

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Liens entres 2 tables avec des données répétées
    Par nirvana dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/07/2013, 14h06
  2. mise en correspondance entre points d'interêt des images
    Par bilzzbenzbilz dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 04/10/2012, 09h04
  3. [XL-2007] Comment créer une dépendance entre deux listes avec des données issus d'un tableau?
    Par efesdark dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2011, 16h22
  4. Réponses: 8
    Dernier message: 26/05/2010, 14h43

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