Effizient Strings in String suchen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Recht trivales Problem aber mir fehlt ein Schlagwort zur Suche, es soll jede Zeile in einer Datei zurückgegeben werden wo mind. ein Wort aus einer Liste von Suchwörter enthalten ist.
Trivial/verschachtelter Ansatz ist langsam, Regex möglich aber gibts andere Algorithmen zur Umsetzung in Python?
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Ich glaube, der RegEx-Ansatz ist vom Verhältnis Implementierungsaufwand zu Geschwindigkeit vielleicht gar nicht so schlecht. Wenn die Datei wiederholt durchsucht werden soll, kann sich auch ein Index-basierter Ansatz lohnen. Wenn du es wirklich selbst implementieren möchtest, kannst du dir hier etwas Geeignetes Aussuchen: https://en.wikipedia.org/wiki/String-se ... algorithms
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Generier einen Regex und schieb die Datei in eine Memory Map mit mmap, die kannst du dann mit finditer und co. durchsuchen.

Funktioniert erfahrungsgemäß auch bei Dateien im zweistelligen GB Bereich sehr gut, die man üblicherweise nicht komplett in den Arbeitsspeicher schieben kann. Das ist schnell umzusetzen und auch in der Praxis sehr performant.

Ich glaub kaum dass man in der Praxis wesentlich schneller wird, zumindest nicht mit Python.
Antworten