Suchmethoden

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
kwatzka
User
Beiträge: 2
Registriert: Sonntag 24. Februar 2019, 16:36

Hallo.
Ich bräuchte Hilfe.
Problem: Ich habe in einem Text-File ca. 300.000 Zeilen.
Ich möchte nun mit Python TextZeilen herausfinden die in der Suche ähnlichen Text Inhalt haben.
Beispiel:
Filenames = open(textfile)
search="saragossa - medley dance mix.mp3"
for line in Filenames:
if search in line:
print ("gefunden")
Im textfile steht allerdings: "Q:\mp3\fasching\saragossa band - medley dance mix (2011).mp3
Diese zeile ist mit der Funktion IN nicht abzudecken.
Wie kann ich nach verschiedenen TextTeilen in den Zeilen suchen. Ich habe re probiert. Ich habe bereits find ausprobiert. Beide haben keinen Erfolg gebracht.
Ich möchte gerne wie beim Suchen in einem Textfile nur Teile zum suchen verwenden: z.B "saragossa" und "dance mix". und es sollte zu finden sein. Danke
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Zunächst solltest du Quellcode hier entsprechend mit Codetags <> versehen, sonst gehen Einrückungen verloren die wichtig für Python sind, und der Code wirkt dann auch nicht mehr ganz so kryptisch. Der in-Operator vergleicht den search-String mit jeder Zeile und schaut, ob dieser exakt so vorkommt. Wenn du den String aufbrichst, bspw. nur in den Bandnamen und den Song, wird der Sucherfolg wahrscheinlicher.

Mich würde interessieren, was bei deinem regulären Ausdruck nicht passt, dazu müsstest du den Versuch hier pasten.
When we say computer, we mean the electronic computer.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Für so ein Problem gibt es verschiedene Ansätze. Man will eigentlich Unschärfe um gegen Rechtschreibfehler gewappnet zu sein. Und ggf Dinge wie Wortstämme um Abwandlungen zu finden. Dafür gibt es fertige Tools wie zb elastic search, oder zumindest grundlegende Verfahren wie trigramme oder Levensthein-Distanz mit denen du arbeiten kannst.

Ein Projekt das Hilfe verspricht aber ggf etwas leichtgewichtiger ist wäre zb http://whoosh.readthedocs.io/en/latest/intro.html - habe ich selbst noch nicht mit gearbeitet, aber sieht gut aus.
nezzcarth
User
Beiträge: 1792
Registriert: Samstag 16. April 2011, 12:47

Interessant wäre hier zu wissen, wie die Datei, in der gesucht werden soll, strukturell aussieht. Wenn die Datei, wie das Beispiel nahelegt, nur aus einem Dateinamen pro Zeile besteht, kann man die Fragestellung etwas anders angehen, als wenn man eine generische Suche braucht. Whoosh kann man schon nehmen. Es ist halt nicht ganz so Feature-complete wie Elasticsearch oder solr. Aber vmtl. brauchst du das auch gar nicht, denn die grundlegenden Sachen, die man so braucht, sind auch in whoosh implementiert.
kwatzka
User
Beiträge: 2
Registriert: Sonntag 24. Februar 2019, 16:36

Guten Morgen.
Danke für die schnellen Antworten. Whoosh sieht vielversprechend aus. Werde dies auspropieren.
Antworten