Heim >Backend-Entwicklung >Python-Tutorial >Warum gibt meine String-Suchfunktion immer „True' zurück?

Warum gibt meine String-Suchfunktion immer „True' zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-14 12:09:12842Durchsuche

Why Does My String Search Function Always Return True?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn