Modification des données d'un fichier

Fermé
Fabrice - 6 juil. 2020 à 08:59
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 16 juil. 2020 à 17:05
Bonjour,

Je cherche à créer un script en python, qui lors de son lancement, pourrait modifier les caractères d'un fichier .txt sélectionné.

Par exemple si dans le fichier texte il y a marqué "bonjour", et bien je souhaiterais que tous les "bonjour" soit remplacé par "bonsoir".

Avez-vous une idée ?

Merci d'avance,

Configuration: Windows / Chrome 83.0.4103.116
A voir également:

11 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 16 juil. 2020 à 11:52
Bonjour Fabrice,

C'est logique, relis ton code:

tu lis tout le fichier avec fichier.read():
fruits
Légumes
tomate

ensuite, tu remplace fruits par pomme dans texte:
pomme
Légumes
tomate

et tu écris tout ca dans le 2eme fichier
(idem avec Légumes: tu remplaces et tu écris tout à nouveau dans le 2eme fichier

Essaie comme ça:
W1 = "pomme"
W2 = "Courgette"
with open("a.txt") as fichier, open("b.txt", "w") as nouveaufichier:
 texte = fichier.read()
 texte = texte.replace("fruit", W1)
 texte = texte.replace("Légume", W2)
 nouveaufichier.write(texte)


apres, si tu veux détruire le 1er fichier et renommer le 2eme:

import os

os.remove('a.txt')
os.rename('b.txt', 'a.txt')
1
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 16 juil. 2020 à 13:11
Tu veux dire un truc comme ça:

remplacement_dict = {'A':['fruit','pomme'], 'B':['fruits','poire']}


donc si la cle = 'A', la liste de remplacement est remplacement_dict['A']

donc ['fruit','pomme']

texte = texte.replace(remplacement_dict[cle][0], remplacement_dict[cle][1])
1
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
6 juil. 2020 à 09:21
Bonjour Fabrice,

As-tu déjà réfléchi, ne serait-ce que sur le papier, aux étapes successives pour en arriver à ce que tu veux ?

(saisir le nom du fichier, l'ouvrir, le lire, etc ...)
0
Bonjour,

Et merci pour ta réponse. Pour les étapes d'ouvertures et de lecture de fichier j'ai déjà quelques commandes élémentaires en tête comme
fic = open("fichiertest.txt", "r")
fic = open("fichiertest.txt", "w")
lecture = fic.read()
print(fic)


Mais je ne comprends pas vraiment comment modifier des caractères déjà présent dans un fichier.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
6 juil. 2020 à 10:28
Tu as bien commencé mais le 2eme fichier doit avoir un nom différent

En effet, il n'est pas possible de modifier "à la volée" le contenu d'un fichier

Il faut donc:

1_ ouvrir le fichier en lecture (fic1 = .............)
2_ ouvrir un fichier temporaire en écriture (fic2 = ....................)
3_lire une ligne
si elle ne contient pas 'bonjour', alors l'écrire dans le fichier tempo.
sinon, y remplacer 'bonjour' par 'bonsoir' et l'écrire dans le fichier tempo.
4_fermer les fichiers
5_detruire le fichier initial
6_ renommer le fichier tempo. avec le nom initial
0
Je vais continuer à chercher en suivant tes conseils.

Merci beaucoup.
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 6 juil. 2020 à 12:01
A tout hasard: remplacer une chaine par une autre:

ligne = "Bonjour toto"
ligne = ligne.replace("Bonjour", "Bonsoir")
print(ligne)   #imprime Bonsoir toto
0
Bonjour Phil_1857,

Je requière une nouvelle fois ton aide.
J'ai plus ou moins avancer, mais me heurte à un nouveau soucis.

W1 = "pomme"
W2 = "Courgette"
with open("a.txt") as fichier, open("b.txt", "w") as nouveaufichier:
    texte = fichier.read()
    nouveau_texte = texte.replace("fruit", W1)
    nouveaufichier.write(nouveau_texte)
    nouveau_texte2 = texte.replace("Légume", W2)
    nouveaufichier.write(nouveau_texte2)



Avec ce code je devrais pouvoir remplacer les mots "fruits" et "Légumes" en "pomme" et "Courgette'"
Cependant si mon fichier texte contient les mots :
fruit

Légume

tomate


Ce code va me renvoyer


pomme

Légume

tomatefruit

Légume

tomate


Alors qu'il devrait me renvoyer uniquement :


Pomme

Courgette

tomate


J'imagine que je dois mettre en place une boucle for, mais je n'ai pas tellement de piste à l'heure actuelle.

Merci d'avance pour ton aide.
0
Merci beaucoup pour ton aide.

J'aurais une dernière question.

J'ai des mots qui sont les mêmes au départ mais qui changent en fonction de clés. Est-ce que tu as une idée avec un système de dictionnaire peut être, qui permettrait que pour une clé "A" fruit devienne pomme mais que pour une clé "B" fruit devienne poire ?

Merci encore.
0
C'est parfait !

Merci infiniment pour ton aide.
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
16 juil. 2020 à 17:05
Ok, donc tu peux marquer cet appel comme "résolu" :-)
0