Textdateien auf String-Inklusivität prüfen
Stellen Sie sich ein Szenario vor, in dem Sie das Vorhandensein einer bestimmten Zeichenfolge in Textdateien feststellen möchten. Bei seiner Identifizierung sollte eine bestimmte Aktion (X) ausgeführt werden; Andernfalls sollte eine alternative Aktion (Y) folgen. Ein Codeausschnitt, der darauf abzielt, dieses Ziel zu erreichen, gibt jedoch immer „True“ zurück, was Sie über seine Genauigkeit rätselt.
Der Schuldige für dieses fehlerhafte Verhalten ist das Fehlen einer Bedingungsprüfung innerhalb der if-Anweisung. Die richtige Implementierung sollte wie folgt aussehen:
if 'blabla' in line:
Wenn Ihre Textdateien jedoch relativ groß sind, kann es effizienter sein, die gesamte Datei in einen String einzulesen und die Suche damit durchzuführen. Hier ist ein Beispiel:
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
Für noch größere Dateien können Sie mmap.mmap() nutzen, um ein „stringähnliches“ Objekt zu erstellen, das die zugrunde liegende Datei verwendet, anstatt den gesamten Inhalt in den Speicher zu laden.
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')
In Python 3 ist zu beachten, dass mmaps Bytearray-Objekten ähneln, was eine Änderung der Suchzeichenfolge in Bytes erfordert Objekt:
import mmap with open('example.txt', 'rb', 0) as file, \ mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s: if s.find(b'blabla') != -1: print('true')
Darüber hinaus können Sie reguläre Ausdrücke auf mmaps für erweiterte Suchfunktionen verwenden, wie z. B. den Abgleich ohne Berücksichtigung der Groß-/Kleinschreibung:
import mmap import re with open('example.txt', 'rb', 0) as file, \ mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s: if re.search(br'(?i)blabla', s): print('true')
Das obige ist der detaillierte Inhalt vonWie kann ich in Python effizient prüfen, ob eine Zeichenfolge in großen Textdateien vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!