Maison >développement back-end >Tutoriel Python >Comment puis-je rechercher et remplacer efficacement du texte dans un fichier à l'aide de Python 3 ?

Comment puis-je rechercher et remplacer efficacement du texte dans un fichier à l'aide de Python 3 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 18:44:18991parcourir

How Can I Efficiently Search and Replace Text in a File Using 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn