Wie nach Wortfolgen eines Strings suchen? Python?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

LordWithLord 
Fragesteller
 29.04.2019, 19:33

Das schwierige ist dann ja, dass immer nach 2 Wörtern die direkt hintereinander sind gesucht werden muss.

0
MWojt  29.04.2019, 19:41
@LordWithLord

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?

0
LordWithLord 
Fragesteller
 29.04.2019, 21:35
@MWojt

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?

0
LordWithLord 
Fragesteller
 29.04.2019, 21:48
@LordWithLord

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.

0
MWojt  29.04.2019, 21:49
@LordWithLord

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)
0
MWojt  29.04.2019, 21:51
@LordWithLord

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.

0

Bilde einen regulären Ausdruck (oder auch hier ein Tutorial dazu) und wende diesen auf die Texte an, in denen gesucht werden soll.

MWojt  29.04.2019, 15:24

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.

0
regex9  29.04.2019, 15:50
@MWojt

Reguläre Ausdrücke sind für diesen Fall genau richtig und nicht too much, denn es soll nach einer Ähnlichkeit gesucht werden (n-Wörter eines Satzes treffen zu), nicht nach einem konstanten Substring.

0
MWojt  29.04.2019, 16:18
@regex9

Na ja, wie ich das verstanden habe, sucht er eben nach Dateinamen, die einem Teil des gegebenen Strings entsprechen. Wenn man das jetzt umdreht und den Dateinamen in dem String sucht, hat man doch, was man wollte, oder nicht?

0