Maison >développement back-end >Tutoriel Python >Comment puis-je rechercher et remplacer efficacement du texte dans un fichier Python ?

Comment puis-je rechercher et remplacer efficacement du texte dans un fichier Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 02:05:13257parcourir

How Can I Efficiently Search and Replace Text in a Python File?

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!

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