Czy Python ma metodę string 'contains' substring?

I'm szuka metody string.contains lub string.indexof w Pythonie.

Chcę zrobić:

if not somestring.contains("blah"):
   continue
Rozwiązanie

Możesz użyć operatora in:

if "blah" not in somestring: 
    continue
Komentarze (14)

Jeśli to'tylko wyszukiwanie podłańcuchów, możesz użyć string.find("podłańcuch").

Musisz być trochę ostrożny z find, index, i in, ponieważ są to wyszukiwania podłańcuchowe. Innymi słowy, to:

s = "This be a string"
if s.find("is") == -1:
    print "No 'is' here!"
else:
    print "Found 'is' in the string."

Wypisałoby Znalazło 'is' w łańcuchu. Podobnie, if "is" w s: oceniłoby na True. To może, ale nie musi być to, czego chcesz.

Komentarze (8)

if needle in haystack: jest normalnym użyciem, jak mówi @Michael -- polega na operatorze in, bardziej czytelnym i szybszym niż wywołanie metody.

Jeśli naprawdę potrzebujesz metody zamiast operatora (np. aby zrobić jakiś dziwny key= dla bardzo osobliwego rodzaju...?), to byłoby to 'haystack'.__contains__. Ale ponieważ twój przykład jest do użycia w if, domyślam się, że tak naprawdę nie masz na myśli tego, co mówisz ;-). Nie jest dobrą formą (ani czytelną, ani wydajną) używanie specjalnych metod bezpośrednio - są one przeznaczone do użycia, zamiast tego, poprzez operatory i wbudowane elementy, które delegują do nich.

Komentarze (0)