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 :

Transformation xml en csv [Python 3.X]


Sujet :

Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Pôle Etude et Automatisation
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pôle Etude et Automatisation
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut Transformation xml en csv
    Bonjour,

    je n'arrive pas à transformer mon fichier xml en csv.

    Pouvez vous m'aider SVP?

    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
     
    #Lecture du fichier xml
     
    f = open("xml2.xml", "r")
     
    # Détermine le nombre de lignes dans le fichier
     
    NombredeLigne = 0
     
    for line in f:
     
        NombredeLigne += 1
     
    # Revient au début du fichier après avoir déterminer le nombre de lignes
     
    f.seek(0)
     
    # Détermine le nombre de champs par ligne
     
    data = f.read()
     
    lines = data.splitlines()
     
    i = 0
     
    NombreChampsParLigne = 0
     
    for line in enumerate(lines) :
     
        s = lines[i]
     
        if s.startswith("<FixedColumn>") :
     
            NombreChampsParLigne += 1
     
            i += 1
     
        i += 1
     
        if i >= NombredeLigne :
     
            break
     
    f.closed
    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
    87
    88
    89
    90
     
    #!/usr/bin/env python
    # -*-coding: utf-8 -*
     
    entetes = [
         'Name',
         'Description',
         'DataType',
         'Format',
         'From',
         'To'
    ]
     
    t = []
    valeurs = []
    w = ""
     
     
    i = 0
    debut = ""
     
    for line in enumerate(lines):
     
        s = lines[i]
     
        if s.startswith("<FixedColumn>") :
            debut = "OK"
     
        if debut == "OK":  
     
            if s.startswith("<Name>") :
                s = s.replace("<Name>", "")
                s = s.replace("</Name>","")
                t.append(s)       
     
            if s.startswith("<Description>") :
                s = s.replace("<Description>", "")
                s = s.replace("</Description>","")
                t.append(s)
     
            if s.startswith("<AlphaNumeric/>") :
                s = s.replace("<AlphaNumeric/>", "AlphaNumeric")
                verifFormat = "no"
                t.append(s)
                w = "NaN"
                t.append(w)
     
            if s.startswith("<Numeric>") :
                s = s.replace("<Numeric>", "Numeric")
                verifFormat = "no"
                t.append(s)
                w = "NaN"
                t.append(w)
     
            if s.startswith("<Date>") :
                s = s.replace("<Date>", "Date")
                t.append(s)
                verifFormat = "yes"
     
            if s.startswith("<Format>") and verifFormat == "yes":
                s = s.replace("<Format>", "")
                s = s.replace("</Format>","")
                verifFormat = "no"
                t.append(s)
     
            if s.startswith("<From>") :
                s = s.replace("<From>", "")
                s = s.replace("</From>","")
                t.append(s)
     
            if s.startswith("<To>") :
                s = s.replace("<To>", "")
                s = s.replace("</To>","")
                t.append(s)
     
     
        i += 1
     
    valeurs.append(t)    
     
    print (t)
     
    f = open('monFichier.csv', 'w')
    ligneEntete = ";".join(entetes) + "\n"
    f.write(ligneEntete)
    for valeur in valeurs:
         ligne = ";".join(valeur) + "\n"
         f.write(ligne)
     
    f.close()
    Merci
    Eric
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Transformation XML en CSV, problème indentation
    Par Max1000p dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 08/06/2012, 21h28
  2. Faisabilité transformation XSL pour CSV -> XML?
    Par H1B4K dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 01/08/2011, 16h39
  3. Réponses: 0
    Dernier message: 29/06/2009, 11h09
  4. sed et awk pour transformation d'un fichier XML en CSV
    Par bstages2000 dans le forum Linux
    Réponses: 4
    Dernier message: 02/03/2008, 17h19
  5. [XML][CSV]Transformer du XML en CSV et inversement !
    Par tgarcia dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 20/11/2006, 16h10

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