Heim >Backend-Entwicklung >Python-Tutorial >Wie kann Pythons Suchen-und-Ersetzen mit variablen Textlängen bei der Dateibearbeitung umgehen?
Python-Dateisuche und -ersetzung mit unterschiedlichen Textlängen
Beim Versuch, mit Python 3 eine Suche und Ersetzung innerhalb einer Datei durchzuführen, haben einige Benutzer Es treten Probleme auf, wenn der Ersatztext kürzer oder länger als der Originaltext ist. Dies kann dazu führen, dass der Datei unbeabsichtigte Zeichen hinzugefügt werden.
Beachten Sie den bereitgestellten Code:
# 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)
Dieser Ansatz schlägt jedoch fehl, wenn längerer Text durch kürzeren Text als die verbleibenden Zeichen ersetzt wird vom Originaltext bleiben zurück.
Lösung:
Um dieses Problem zu beheben, ist es Es wird empfohlen, die gesamte Datei in den Speicher einzulesen, die Such- und Ersetzungsvorgänge durchzuführen und dann den geänderten Inhalt in einem separaten Schritt zurück in die Datei zu schreiben:
# 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)
Diese Methode stellt sicher, dass die Datei geändert wird platzieren, ohne unerwünschte Zeichen einzuführen.
Das obige ist der detaillierte Inhalt vonWie kann Pythons Suchen-und-Ersetzen mit variablen Textlängen bei der Dateibearbeitung umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!