Ich arbeite mit Python v2 und versuche herauszufinden, ob Sie erkennen können, ob sich ein Wort in einer Zeichenfolge befindet.
Ich habe einige Informationen zum Identifizieren gefunden, ob sich das Wort in der Zeichenfolge befindet - mithilfe von .find, aber es gibt eine Möglichkeit, eine IF-Anweisung auszuführen. Ich hätte gerne so etwas wie folgendes:
if string.find(word):
print 'success'
Vielen Dank für jede Hilfe.
Beachten Sie jedoch, dass dies einer Folge von Zeichen entspricht, nicht unbedingt einem ganzen Wort - zum Beispiel
'word' in 'swordsmith'
ist es wahr. Wenn Sie nur ganze Wörter abgleichen möchten, sollten Sie reguläre Ausdrücke verwenden:quelle
Wenn Sie herausfinden möchten, ob sich ein ganzes Wort in einer durch Leerzeichen getrennten Liste von Wörtern befindet, verwenden Sie einfach:
Diese elegante Methode ist auch die schnellste. Im Vergleich zu den Ansätzen von Hugh Bothwell und daSong:
Edit: Eine kleine Variante dieser Idee für Python 3.6+, ebenso schnell:
quelle
contains_word("says", "Simon says: Don't use this answer")
find gibt eine Ganzzahl zurück, die den Index darstellt, in dem das Suchelement gefunden wurde. Wenn es nicht gefunden wird, gibt es -1 zurück.
quelle
Sie können die Zeichenfolge in die Wörter aufteilen und die Ergebnisliste überprüfen.
quelle
Diese kleine Funktion vergleicht alle Suchwörter im angegebenen Text. Wenn alle Suchwörter im Text gefunden werden, wird die Suchlänge oder auf
False
andere Weise zurückgegeben.Unterstützt auch die Suche nach Unicode-Zeichenfolgen.
Verwendung:
quelle
Wenn das Abgleichen einer Zeichenfolge nicht ausreicht und Sie ganze Wörter abgleichen müssen, finden Sie hier eine einfache Funktion, mit der Sie Ihre Arbeit erledigen können. Grundsätzlich werden bei Bedarf Leerzeichen angehängt und in der Zeichenfolge danach gesucht:
Dies setzt voraus, dass Kommas und andere Satzzeichen bereits entfernt wurden.
quelle
Da Sie nach einem Wort und nicht nach einer Zeichenfolge fragen, möchte ich eine Lösung vorstellen, die nicht auf Präfixe / Suffixe reagiert und Groß- und Kleinschreibung ignoriert:
Wenn Ihre Wörter möglicherweise Regex-Sonderzeichen (z. B.
+
) enthalten, benötigen Sie diesere.escape(word)
quelle
Erweiterte Methode, um das genaue Wort zu überprüfen, das wir in einer langen Zeichenfolge finden müssen:
quelle
Die Verwendung von Regex ist eine Lösung, für diesen Fall jedoch zu kompliziert.
Sie können Text einfach in eine Wortliste aufteilen. Verwenden Sie dazu die Split- Methode ( Separator , Num ) . Es gibt eine Liste aller Wörter in der Zeichenfolge zurück, wobei das Trennzeichen als Trennzeichen verwendet wird. Wenn das Trennzeichen nicht angegeben ist, wird es auf alle Leerzeichen aufgeteilt (optional können Sie die Anzahl der Teilungen auf num beschränken ).
Dies funktioniert nicht für Zeichenfolgen mit Kommas usw. Zum Beispiel:
Wenn Sie auch alle Kommas usw. aufteilen möchten, verwenden Sie das folgende Trennzeichen :
quelle
mystring.lower().split()
undword.lower()
ich denke, das ist auch schneller als das Regex-Beispiel.Sie können einfach ein Leerzeichen vor und nach "Wort" hinzufügen.
Auf diese Weise wird nach dem Leerzeichen vor und nach "Wort" gesucht.
quelle