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 :

Traitement basique sur fichier xml avec python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut Traitement basique sur fichier xml avec python
    bonjour

    novice je recherche des informations suivantes.

    je dispose d'un fichier xml pour lequel je souhaite changer certaines valeurs

    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
    <GeneratedReport>	   
    <Interval Start="2013/09/17 00:00:00.000" End="2013/09/24 23:59:59.000">	   
    <toto Valeur="valeur1"/>	   
    <toto Valeur="valeur2"/>	   
    <toto Valeur="valeur3"/>	   
    <toto Valeur="valeur1"/>	   
    <toto Valeur="valeur2"/>	   
    <toto Valeur="valeur3"/>
    <toto Valeur="valeur1"/>	   
    <toto Valeur="valeur2"/>	   
    <toto Valeur="valeur3"/>
    <toto Valeur="valeur1"/>	   
    <toto Valeur="valeur2"/>	   
    <toto Valeur="valeur3"/>	   
    </Interval>	   
    </GeneratedReport>

    Je souhaite modifier les termes valeur1 par nombre1 valeur2 par nombre2 et ainsi de suite


    j ai réalisé ce petit script afin de remplacer uniquement le terme "valeur1" mais cela ne fonctionne pas .

    En toute vraissemblance , il s'agit de la ligne chaine.replace("valeur1","nombre1") qui doit être erronée ou mal appropriée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    chaine = "valeur1" # Texte à rechercher
     
    fichier = open("essai.xml","r")
    for ligne in fichier:
        if chaine in ligne:
            print ligne
    chaine.replace("valeur1","nombre1")
    fichier.close()

    par avance merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut Lire la documentation ne fait pas de tort
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chaine = chaine.replace(ancien,nouveau,compteur)
    La méthode replace retourne une copie de l'objet chaine dans lequel toute les occurrences de ancien sont replacées par nouveau

    Rappel : En Python, les chaînes sont pas mutables, donc il n'y a aucune opération de transformation effectuée sur place.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    re


    je viens de modifier dans mon code comme conseillé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    chaine = "valeur1" # Texte à rechercher
     
    fichier = open("essai.xml","r")
    for ligne in fichier:
        if chaine in ligne:
            print ligne
    chaine = chaine.replace("valeur1","nombre1)
    fichier.close()

    mai lorsque je l essaie je ne constate aucune modification au sein du fichier

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par raphael75015 Voir le message
    re


    je viens de modifier dans mon code comme conseillé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    chaine = "valeur1" # Texte à rechercher
     
    fichier = open("essai.xml","r")
    for ligne in fichier:
        if chaine in ligne:
            print ligne
    chaine = chaine.replace("valeur1","nombre1)
    fichier.close()

    mai lorsque je l essaie je ne constate aucune modification au sein du fichier
    Bonjour,

    essayez ceci :

    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
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    # on ouvre le fichier en contexte with
    with open("essai.xml", "r+") as fichier:
     
        # on récupère la liste de toutes les lignes
        data = fichier.readlines()
     
        # on fusionne toutes les lignes en une seule str()
        data = "".join(data)
     
        # on remplace la valeur partout
        data = data.replace("valeur1", "nombre1")
     
        # on remet la tête de lecture au début
        fichier.seek(0)
     
        # on réécrit le fichier
        fichier.write(data)
     
        # inutile de refermer le fichier
        # cela se fait automatiquement
        # avec le contexte with
     
    # end with
    puis lisez la doc :

    https://docs.python.org/2.7/library/functions.html#open

    https://docs.python.org/2.7/library/...n-file-objects

    @+.

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    bonjour

    je vous remercie pour votre réponse cela correspond à mon souhait

    Je vais m'atteler à la lecture des documents que vous me préconisez

    cordialement

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par raphael75015 Voir le message
    bonjour

    je vous remercie pour votre réponse cela correspond à mon souhait

    Je vais m'atteler à la lecture des documents que vous me préconisez

    cordialement
    Merci de cliquer sur si votre problème a trouvé réponse.

    @+.

Discussions similaires

  1. Lecture dun fichier xml avec python
    Par merlinerick dans le forum Interfaçage autre langage
    Réponses: 6
    Dernier message: 29/07/2009, 13h49
  2. pickler un fichier XML avec python
    Par Gldev_comp dans le forum Général Python
    Réponses: 1
    Dernier message: 10/07/2008, 05h31
  3. Lire un fichier XML avec Python
    Par eyquem dans le forum Général Python
    Réponses: 2
    Dernier message: 19/12/2007, 13h54
  4. Gérer un fichier XML avec Python
    Par ffets dans le forum Général Python
    Réponses: 25
    Dernier message: 31/10/2007, 14h47
  5. Java et XML : Traitement d'un fichier XML avec JAVA
    Par nice dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 18/05/2006, 21h24

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