Maison > développement back-end > Tutoriel Python > Comment la recherche et le remplacement de Python peuvent-ils gérer des longueurs de texte variables dans l'édition de fichiers ?

Comment la recherche et le remplacement de Python peuvent-ils gérer des longueurs de texte variables dans l'édition de fichiers ?

Linda Hamilton
Libérer: 2024-12-15 20:33:10
original
945 Les gens l'ont consulté

How Can Python's Search-and-Replace Handle Variable Text Lengths in File Editing?

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)
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal