Wie nach Wortfolgen eines Strings suchen? Python?
Hallo,
ich habe einen String:
Satz = „Mein Handy Akku ist leer“
(Ich weiß natürlich dass die Anführungszeichen so falsch gesetzt sind, ist auf dem Handy schwer)
Nun will ich, dass Python (3.6) in einem Verzeichnis nach Text Dateien sucht, die so heißen wie ein Teil des Satzes.
Beispiel:
Akku ist leer.txt
Python soll also immer mindestens nach zwei, hintereinander folgenden Wörtern von einem Satz suchen. Wenn Python dann einen Treffer hat, sollte der Inhalt dieser Text Datei als Variable gespeichert werden. Wie ich den Inhalt speichern kann weiß ich, ich habe aber leider keine Idee, wie das andere funktionieren kann, deshalb frage ich hier die Experten ;)
Danke für jede hilfreiche Antwort!
2 Antworten
Ich hab zwar nicht viel Ahnung von Python, würde aber von der grundsätzlichen Vorgehensweise zuerst ein Array mit allen Dateinamen erstellen (die Dateiendung hier entfernen) und dann überprüfen, ob der Dateiname in dem gesuchten String vorkommt. Wie die genauen Befehle heißen, weiß ich nicht, lässt sich aber sicher ergoogeln.
Ich hoffe, dass ich Dir irgendwie helfen konnte.
Angenommen Du hast den String wie im Beispiel und Deine Liste sieht so aus:
Akku ist leer.txt
Mein Handy.pdf
Handy Akku.docx
Dann muss Du doch nur die Endung entfernen:
Akku ist leer
Mein Handy
Handy Akku
Und dann den Suchstring durchsuchen:
"Akku ist leer" in "Mein Handy Akku ist leer" == true
"Mein Handy" in "Mein Handy Akku ist leer" == true
"Handy Akku" in "Mein Handy Akku ist leer" == true
Oder habe ich jetzt die Anforderungen falsch verstanden?
Ich habe nun eine Datei Liste bei der die Endungen „.txt“ weg sind. Nun würde ich es wie folgt machen:
,,if any(s in text for s in dateiliste):“
Ich habe versucht, ob Elemente einer Liste so mit einem oder mehreren Wörtern eines Strings abgeglichen werden können, ohne Erfolg. Hast du ne andere Idee?
Ok, geht nun, ich Dummkopf xD. Nun will ich dann aber wissen, jetzt wo ich weiß dass es die Datei gibt, wie der Pfad zu ihr ist oder wie sie genau heißt.
Das mit dem in war Pseudocode. In Python ginge das wohl so:
foundFiles = []
for datei in dateiliste:
if text.find(datei) > -1:
foundFiles.append(datei)
Dafür könntest Du Dir eine File-Klasse machen, wo Du dann den Namen ohne Endung und Pfad und zusätzlich den Pfad und die Endung speicherst.
Bilde einen regulären Ausdruck (oder auch hier ein Tutorial dazu) und wende diesen auf die Texte an, in denen gesucht werden soll.
Für den Anwendungsfall sind reguläre Ausdrücke meiner Meinung nach vielleicht doch ein wenig too much, da kann man besser einfach stumpf in dem String suchen (sollte es bei Python eine vorgefertigte Funktion für geben). Das ist dann nicht nur einfacher zu verstehen, sondern auch noch beim Ausführen schneller.
Das schwierige ist dann ja, dass immer nach 2 Wörtern die direkt hintereinander sind gesucht werden muss.