Pracuję z Pythonem v2 i próbuję dowiedzieć się, czy możesz stwierdzić, czy słowo znajduje się w ciągu.
Znalazłem informacje na temat identyfikowania, czy słowo znajduje się w ciągu - używając .find, ale czy istnieje sposób na wykonanie instrukcji IF. Chciałbym mieć coś takiego:
if string.find(word):
print 'success'
Dzięki za wszelką pomoc.
ale pamiętaj, że pasuje to do sekwencji znaków, niekoniecznie do całego słowa - na przykład
'word' in 'swordsmith'
jest True. Jeśli chcesz dopasować tylko całe słowa, powinieneś użyć wyrażeń regularnych:źródło
Jeśli chcesz dowiedzieć się, czy całe słowo znajduje się na liście słów oddzielonych spacjami, po prostu użyj:
Ta elegancka metoda jest również najszybsza. W porównaniu z podejściami Hugh Bothwella i daSonga:
Edycja: niewielki wariant tego pomysłu dla Pythona 3.6+, równie szybki:
źródło
contains_word("says", "Simon says: Don't use this answer")
find zwraca liczbę całkowitą reprezentującą indeks miejsca znalezienia elementu wyszukiwania. Jeśli nie zostanie znaleziony, zwraca -1.
źródło
Możesz podzielić ciąg na słowa i sprawdzić listę wyników.
źródło
Ta niewielka funkcja porównuje wszystkie wyszukiwane słowa w podanym tekście. Jeśli wszystkie wyszukiwane słowa znajdują się w tekście, zwraca długość wyszukiwania lub
False
inny sposób.Obsługuje również wyszukiwanie ciągów znaków Unicode.
stosowanie:
źródło
Jeśli dopasowanie sekwencji znaków nie jest wystarczające i musisz dopasować całe słowa, oto prosta funkcja, która wykonuje zadanie. Zasadniczo dodaje spacje w razie potrzeby i wyszukuje je w ciągu:
Zakłada się, że przecinki i inne znaki interpunkcyjne zostały już usunięte.
źródło
Ponieważ pytasz o słowo, a nie o string, chciałbym przedstawić rozwiązanie, które nie jest wrażliwe na przedrostki / sufiksy i ignoruje wielkość liter:
Jeśli twoje słowa mogą zawierać specjalne znaki regex (takie jak
+
), potrzebujeszre.escape(word)
źródło
Zaawansowany sposób sprawdzenia dokładnego słowa, które musimy znaleźć w długim ciągu:
źródło
Użycie wyrażenia regularnego jest rozwiązaniem, ale jest to zbyt skomplikowane w takim przypadku.
Możesz po prostu podzielić tekst na listę słów. Użyj do tego metody split ( separator , num ) . Zwraca listę wszystkich słów w ciągu, używając separatora jako separatora. Jeśli separator jest nieokreślony, dzieli się na wszystkie białe znaki (opcjonalnie możesz ograniczyć liczbę podziałów do num ).
To nie zadziała w przypadku ciągów z przecinkami itp. Na przykład:
Jeśli chcesz również podzielić wszystkie przecinki itp., Użyj argumentu separatora w ten sposób:
źródło
mystring.lower().split()
iword.lower()
myślę, że jest to również szybsze niż przykład wyrażenia regularnego.Możesz po prostu dodać spację przed i po „słowie”.
W ten sposób szuka spacji przed i po „słowie”.
źródło