Heim >Backend-Entwicklung >Python-Tutorial >Warum gibt meine String-Suchfunktion immer „True' zurück?
Suche nach Zeichenfolgen in Textdateien
Beim Versuch, das Vorhandensein einer bestimmten Zeichenfolge in einer Textdatei zu erkennen, sind Sie auf eine gestoßen Problem, bei dem der Code unabhängig von der Existenz der Zeichenfolge unerwartet „True“ zurückgibt. Lassen Sie uns den Code untersuchen und das Problem beheben:
def check(): datafile = file('example.txt') found = False for line in datafile: if blabla in line: found = True break check() if True: print "true" else: print "false"
Der Variablenname blabla deutet darauf hin, dass Sie nach einer Zeichenfolge suchen, die jedoch nicht im Code definiert ist. Dies ist wahrscheinlich die Ursache des Problems, bei dem der Code immer „True“ zurückgibt. Stellen Sie sicher, dass Sie blabla mit der entsprechenden Zeichenfolge definieren, nach der Sie suchen, bevor Sie die Funktion check() ausführen.
Alternativer Ansatz mit Datei-Lese:
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
Dies Die Methode liest die gesamte Datei in den Speicher und ermöglicht so die direkte Suche nach der Zeichenfolge. Beachten Sie jedoch, dass dieser Ansatz aufgrund von Speicherbeschränkungen möglicherweise nicht für große Dateien geeignet ist.
mmap-Ansatz:
import mmap with open('example.txt') as f: s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) if s.find('blabla') != -1: print('true')
mmap ermöglicht die Erstellung eines Speicher- zugeordnete Darstellung der Datei, wodurch effektiv ein „stringartiges“ Objekt erstellt wird, das die zugrunde liegende Datei verwendet, ohne die gesamte Datei in den Speicher einzulesen, wodurch die Speichernutzung reduziert wird.
Das obige ist der detaillierte Inhalt vonWarum gibt meine String-Suchfunktion immer „True' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!