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 :

Transformer un fichier txt en xml


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 116
    Points : 40
    Points
    40
    Par défaut Transformer un fichier txt en xml
    Bonjour,

    je débute comme beaucoup.

    J'ai un fichier txt avec comme contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Date: 02/04/2009             Job: zedb
    Time: 11:04:32               Name: 
     
     
    MachID: 60366                StartRec: 488
    OperID: maxsys               StopRec: 500
    il faudrait que je crée fichier xml en exploitant ce fichier.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <scope>
    <Date>02/04/2009</Date>
    <Time>11:04:32</Time>
    <Job>zedb</Name>
    <MachID>60366</MachID>
    <OperID>maxsys</OperID>
    <StartRec>488</StartRec>
    <StopRec>500</StopRec>
    </scope>
    Pour extraire les données du fichier text, c'est ok.
    je les ai mise dans des Map.
    Après traitement, j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    m_dico_lot={'StartRec': '488', 'Job': 'zedb', 'Date': '02/04/2009', 'Time' : '11:04:32', 'MachID' : '60366', 'OperID' : 'maxsys', 
    	    'StopRec' : '500'}
    Maintenant, j'aimerais avoir des conseils sur la manière de procéder pour obtenir le flux xml. Je ne vois pas comment faire ça proprement.

    Faut-il passer par Sax par exmple?

    Merci d'avance.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    S'il s'agit simplement de stocker ces données, tu peux te contenter d'un formatage de chaîne. Le plus simple 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
    template = """<scope>
    <Date>%(Date)s</Date>
    <Time>%(Time)s</Time>
    <Job>%(Job)s</Job>
    <Name>%(Name)s</Name>
    <MachID>%(MachId)s</MachID>
    <OperID>%(OperId)s</OperID>
    <StartRec>%(StartRec)s</StartRec>
    <StopRec>%(StopRec)s</StopRec>
    </scope>"""
     
    fd = open("monfichier.xml", "w")
    fd.write(template % m_dico_lot)
    fd.close()
    Attention tout de même, aucune vérification n'est faite, à toi de voir ce dont tu as besoin. Un fonctionnement plus évolué nécessitera peut-être une approche un peu plus complexe (écriture en plusieurs fois si certains champs sont optionnels par exemple).

    P.S.: J'ai supposé que le <Job>...</Name> recoupait 2 champs Job et Name

  3. #3
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Bonjour,
    Avec ElementTree, ce n'est pas compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from xml.etree.ElementTree import Element,dump
     
    m_dico_lot={'StartRec': '488', 'Job': 'zedb', 'Date': '02/04/2009', 'Time' : '11:04:32', 'MachID' : '60366', 'OperID' : 'maxsys', 
    	    'StopRec' : '500'}
    root=Element("scope")
    for (k,v) in m_dico_lot.items():
        elem=Element(k)
        elem.text=v
        root.append(elem)
    dump(root)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 116
    Points : 40
    Points
    40
    Par défaut
    Je n'ai pas accès à ElementTree.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    from ElementTree import ElementTree,Element
    ImportError: No module named ElementTree
    Est-il possible de faire la même chose avec Sax?


    Merci

  5. #5
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Citation Envoyé par hitchie Voir le message
    Je n'ai pas accès à ElementTree.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    from ElementTree import ElementTree,Element
    ImportError: No module named ElementTree
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from xml.etree.ElementTree import ElementTree
    a moindre qu'il y est deux ElementTree différents
    Mon guide pour apprendre Tkinter - N'oubliez pas de consulter les FAQ Python ou de visiter mon blog

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/11/2012, 11h39
  2. [XL-2010] transforme fichier Txt en XML avec EXCEL
    Par bforzeus dans le forum Excel
    Réponses: 1
    Dernier message: 05/03/2012, 23h31
  3. Erreur pour transformer un fichier Excel en XML
    Par Leniouns dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/01/2012, 14h21
  4. Transformer un fichier .txt en .wav
    Par stage84 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 16/07/2008, 12h23
  5. [Tableaux] transformation d'un fichier txt en xml
    Par edophie dans le forum Langage
    Réponses: 1
    Dernier message: 26/09/2006, 12h55

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