Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / recherche substitution dans fichier

recherche substitution dans fichier

Remonter à Forum général Python
  • recherche substitution dans fichier

    Envoyé par ludolac le 16 Mars 2012 à 20:49
    Bonjour,

    Je debute sous python, et souhaiterez effectuer des manipulations sur un fichier, du type:
    contenu de monfichier.txt:
    ICI20120316
    199
    245
    299
    LA20120312
    12
    121
    ICI20120315
    154
    123
    363
    145
    250
    LA20120304
    299

    Je souhaiterez parcourir mon fichier et remplacer a chaque fois la valeur apres LAXXXXXXX par celle du ICIXXXXXXXX.
    Avez vous de piste à m'indiquer ?

    Merci d'avance...


    • Re: recherche substitution dans fichier

      Envoyé par sGuyon le 12 Avril 2012 à 09:28
      Bonjour
       

      # si le fichier est dans le même répertoire que le script (en gros ...)
      chemin_du_fichier = "monfichier.txt"

      # sinon
      import os
      chemin_du_fichier = os.sep.join(["d:", "projets", "monfichier.txt"]) # génère le chemin "c:\projets\monfichier.txt" en tenant compte du système d'exploitation pour écrire les séparateurs (-> '\')

      # l'essentiel pour lire chaque ligne d'un fichier
      for ligne in open(chemin_du_fichier, "r"): # "r" pour lecture seule
      print ligne # par exemple



      ensuite, pour manipuler des chaines de caractère,
      voir le module re pour les expressions rationnelles
      et Kodos, un logiciel qui permet de les tester facilement et de les deboguer

      mais pour faire simple:



      # code complet
      # remplace chaque LA par le dernir ICI connu, en parcourant les lignes de haut en bas.
      # aucun ICI n'est initialisé, donc cela plante si la première ligne LA est rencontrée avant la première ligne ICI


      nouveau_contenu = list() # liste pour les lignes à écrire en sortie

      for ligne in open(chemin_du_fichier, "r"): # "r" pour lecture seule
      # pour chaque ligne
      if ligne[:3] == "ICI": # les lignes ici
      ici = ligne[3:] # mémorise - mémorise aussi le saut de ligne - suppose qu'il y a un saut de ligne, puisqu'il y a une autre ligne avec LA qui va suivre
      nouveau_contenu.append(ligne) # transfère cette ligne ICI sans la modifier
      elif ligne[:2] == "LA": # les lignes LA -> remplace
      nouveau_contenu.append("LA" + ici ) # fabrique une nouvelle ligne commanacnt par "LA" et contenant ce qui avait été mémorisé à la ligne ICI précédente (donc avec un saut de ligne)
      else: # toutes les autres lignes -> transfère simplement
      nouveau_contenu.append(ligne)


      # enregistre simplement dans un fichier de sortie le contenu de la liste nouveau_contenu
      f = open("fichier_sortie.txt", "w") # w pour écrire
      for ligne in nouveau_contenu:
      f.write(ligne) # chaque ligne contient déjà son saut de ligne, puisque les lignes ICI sont transférées telles quelles, les lignes LA sont recréées avec le saut de ligne qui avait été mémorisé depuis la ligne ICI, et les autres lignes sont transférées telles quelles
      f.close()

      • Re: recherche substitution dans fichier

        Envoyé par ludolac le 14 Août 2012 à 23:22
        Merci beaucoup pour cette explication trés claire.
        Désolé de ne pas t'avoir remercié plus rapidement.

Rendu par Ploneboard