Rechercher et remplacer du texte
La recherche et le remplacement de texte dans un fichier sont une tâche courante en programmation. Python propose plusieurs façons d'y parvenir en utilisant des bibliothèques telles que os, sys et fileinput.
Tentative originale
Une approche courante consiste à utiliser une boucle pour parcourir la ligne du fichier. par ligne, en vérifiant le texte recherché et en le remplaçant par le texte de remplacement. Voici un exemple :
import os import sys import fileinput print("Text to search for:") textToSearch = input("> ") print("Text to replace it with:") textToReplace = input("> ") print("File to perform Search-Replace on:") fileToSearch = input("> ") tempFile = open(fileToSearch, 'r+') for line in fileinput.input(fileToSearch): if textToSearch in line: print('Match Found') else: print('Match Not Found!!') tempFile.write(line.replace(textToSearch, textToReplace)) tempFile.close() input('\n\n Press Enter to exit...')
Problèmes liés au remplacement sur place
Cette approche fonctionne bien pour les remplacements simples. Cependant, lorsque le texte de remplacement est plus long ou plus court que le texte original, des problèmes peuvent survenir. Par exemple, lors du remplacement de « abcd » par « ram », des caractères supplémentaires restent à la fin (« salut, c'est ram, salut, c'est ram »).
Solution : lire, modifier, écrire
Pour éviter ces problèmes, il est recommandé de lire l'intégralité du fichier en mémoire, de le modifier, puis de le réécrire dans le fichier dans une étape distincte. Cette approche garantit que la structure du fichier reste intacte :
# Read in the file with open('file.txt', 'r') as file: filedata = file.read() # Replace the target string filedata = filedata.replace('abcd', 'ram') # Write the file out again with open('file.txt', 'w') as file: file.write(filedata)
Cette méthode est plus efficace pour les fichiers volumineux et évite la perte de données en cas d'interruption pendant le processus d'écriture.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!