Maison >développement back-end >Tutoriel Python >Comment puis-je rechercher et remplacer efficacement du texte dans un fichier à l'aide de Python 3 ?
Rechercher et remplacer du texte dans un fichier avec Python 3
Dans Python 3, vous pouvez rechercher et remplacer du texte dans un fichier en utilisant diverses méthodes. Une approche courante est illustrée dans le code fourni.
Analyse du code
Votre code fourni lit le texte à rechercher et à remplacer ainsi que le chemin du fichier de l'utilisateur. Il ouvre ensuite le fichier en lecture et en écriture, recherche les occurrences du texte recherché à l'aide de fileinput, le remplace par le texte de remplacement et écrit le contenu modifié dans le fichier.
Problème de remplacement de 'abcd ' par 'ram'
Le problème signalé avec les résultats de remplacement se produit car la chaîne 'abcd' est plus longue que 'ram'. Lorsque 'abcd' est remplacé par 'ram', les caractères supplémentaires à la fin du texte remplacé ne sont pas supprimés, ce qui entraîne les "caractères indésirables" que vous avez observés.
Solution
Pour résoudre ce problème, vous devez tenir compte de la différence potentielle de longueur entre les chaînes de recherche et de remplacement. Voici une version mise à jour du code qui devrait fonctionner correctement :
import os 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: tempFile.write(line.replace(textToSearch, textToReplace)) else: tempFile.write(line) tempFile.close() input('Press Enter to exit...')
Implémentation mise à jour
Au lieu de remplacer toutes les occurrences de textToSearch par textToReplace, le code mis à jour utilise la ligne .replace() dans la boucle, garantissant que seule l'occurrence spécifique trouvée est remplacée. Cette modification élimine les caractères indésirables résiduels.
Solution efficace en mémoire
Le code suppose que le fichier tient entièrement en mémoire. Si le fichier est trop volumineux, envisagez de lire et d'écrire dans le fichier par morceaux pour éviter les problèmes de mémoire.
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!