recherche substitution dans fichier
Remonter à Forum général Python
-
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...
-
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()
-
Rendu par Ploneboard
