Recherche et remplacement de fichiers Python avec différentes longueurs de texte
En essayant d'utiliser Python 3 pour effectuer une recherche et un remplacement dans un fichier, certains utilisateurs rencontrer des problèmes lorsque le texte de remplacement est plus court ou plus long que le texte d’origine. Cela peut entraîner l'ajout involontaire de caractères au fichier.
Considérez le code fourni :
# Get user input for search and replacement text textToSearch, textToReplace, fileToSearch = input("Text to search for: "), input("Text to replace it with: "), input("File to perform Search-Replace on: ") # Open the file and loop through each line with open(fileToSearch, 'r+') as tempFile: for line in fileinput.input(fileToSearch): # Perform replacement only when a match is found if textToSearch in line: line = line.replace(textToSearch, textToReplace) # Write the modified line back to the file tempFile.write(line)
Cette approche échoue cependant lors du remplacement d'un texte plus long par un texte plus court, car les caractères restants du texte original sont laissés pour compte.
Solution :
Pour résoudre ce problème, il est Il est recommandé de lire l'intégralité du fichier en mémoire, d'effectuer les opérations de recherche et de remplacement, puis de réécrire le contenu modifié dans le fichier dans une étape distincte :
# Read the file into memory with open('file.txt', 'r') as file: filedata = file.read() # Perform the replacement filedata = filedata.replace('abcd', 'ram') # Write the modified content back to the file with open('file.txt', 'w') as file: file.write(filedata)
Cette méthode garantit que le fichier est modifié sur place sans introduire de caractères involontaires.
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!