Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich in Python effizient prüfen, ob eine Zeichenfolge in großen Textdateien vorhanden ist?

Wie kann ich in Python effizient prüfen, ob eine Zeichenfolge in großen Textdateien vorhanden ist?

DDD
Freigeben: 2024-12-12 12:45:11
Original
877 Leute haben es durchsucht

How Can I Efficiently Check for a String's Presence in Large Text Files in Python?

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:
Nach dem Login kopieren

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")
Nach dem Login kopieren

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')
Nach dem Login kopieren

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')
Nach dem Login kopieren

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')
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage