Sprawdzenie, czy łańcuch zawiera podłańcuch, pomaga uogólnić warunki i stworzyć bardziej elastyczny kod. Dodatkowo, w zależności od modelu domeny – sprawdzenie, czy ciąg zawiera podciąg, może również pozwolić na wywnioskowanie pól obiektu, jeśli ciąg sam w sobie koduje pole.
W tym przewodniku przyjrzymy się jak sprawdzić, czy ciąg zawiera podciąg w Pythonie.
Połączenia in Operator
Najłatwiejszym sposobem sprawdzenia, czy ciąg Pythona zawiera podłańcuch, jest użycie metody in
operator.
Połączenia in
operator służy do sprawdzania struktur danych pod kątem członkostwa w Pythonie. Zwraca wartość logiczną (albo True
or False
). Aby sprawdzić, czy łańcuch zawiera podłańcuch w Pythonie przy użyciu in
operatora, po prostu wywołujemy go na superciągu:
fullstring = "StackAbuse"
substring = "tack"
if substring in fullstring:
print("Found!")
else:
print("Not found!")
Ten operator jest skrótem do wywoływania obiektu __contains__
metoda, a także dobrze sprawdza się przy sprawdzaniu, czy element istnieje na liście. Warto zauważyć, że tak nie jest bezpieczny dla wartości null, więc jeśli nasz fullstring
wskazywał na None
, zostałby zgłoszony wyjątek:
TypeError: argument of type 'NoneType' is not iterable
Aby tego uniknąć, najpierw sprawdź, czy wskazuje na None
albo nie:
fullstring = None
substring = "tack"
if fullstring != None and substring in fullstring:
print("Found!")
else:
print("Not found!")
Połączenia Ciąg.indeks() Metoda wykonania
Typ String w Pythonie ma metodę o nazwie index()
którego można użyć do znalezienia początkowego indeksu pierwszego wystąpienia podłańcucha w ciągu.
Jeśli podłańcuch nie zostanie znaleziony, a ValueError
zgłaszany jest wyjątek, który można obsłużyć za pomocą bloku try-except-else:
fullstring = "StackAbuse"
substring = "tack"
try:
fullstring.index(substring)
except ValueError:
print("Not found!")
else:
print("Found!")
Ta metoda jest przydatna, jeśli potrzebujesz również znać pozycję podłańcucha, a nie tylko jego istnienie w całym ciągu. Sama metoda zwraca indeks:
print(fullstring.index(substring))
Chociaż – w celu sprawdzenia, czy łańcuch zawiera podłańcuch, jest to szczegółowe podejście.
Metoda String.find().
Klasa String ma inną metodę o nazwie find()
co jest wygodniejsze w użyciu niż index()
, głównie dlatego, że nie musimy się martwić o obsługę wyjątków.
If find()
nie znajdzie dopasowania, zwraca -1, w przeciwnym razie zwraca najbardziej wysunięty na lewo indeks podłańcucha w większym łańcuchu:
Zapoznaj się z naszym praktycznym, praktycznym przewodnikiem dotyczącym nauki Git, zawierającym najlepsze praktyki, standardy przyjęte w branży i dołączoną ściągawkę. Zatrzymaj polecenia Google Git, a właściwie uczyć się to!
fullstring = "StackAbuse"
substring = "tack"
if fullstring.find(substring) != -1:
print("Found!")
else:
print("Not found!")
Oczywiście wykonuje to samo wyszukiwanie co index()
i zwraca indeks początku podciągu w łańcuchu nadrzędnym:
print(fullstring.find(substring))
Wyrażenia regularne (RegEx)
Wyrażenia regularne zapewniają bardziej elastyczny (choć bardziej złożony) sposób sprawdzania ciągów pod kątem dopasowania wzorców. Dzięki wyrażeniom regularnym możesz przeprowadzać elastyczne i zaawansowane wyszukiwania w znacznie większych przestrzeniach wyszukiwania, zamiast prostych kontroli, jak poprzednio.
Python jest dostarczany z wbudowanym modułem do obsługi wyrażeń regularnych, tzw re
, re
moduł zawiera funkcję o nazwie search()
, którego możemy użyć do dopasowania wzorca podciągu:
from re import search
fullstring = "StackAbuse"
substring = "tack"
if search(substring, fullstring):
print "Found!"
else:
print "Not found!"
Ta metoda jest najlepsza, jeśli potrzebujesz bardziej złożonej funkcji dopasowywania, takiej jak dopasowywanie bez rozróżniania wielkości liter, lub jeśli masz do czynienia z dużymi obszarami wyszukiwania. W przeciwnym razie należy unikać komplikacji i wolniejszej prędkości wyrażenia regularnego w przypadku prostych przypadków użycia pasujących do podciągów.
O autorze
Ten artykuł został napisany przez Jacoba Stopaka, konsultanta ds. oprogramowania i programistę, którego pasją jest pomaganie innym w ulepszaniu ich życia za pomocą kodu. Jakub jest twórcą Początkowe zatwierdzenie – strona poświęcona pomocy ciekawskim programistom w nauce kodowania ich ulubionych programów. Wyróżniony projekt pomaga ludziom naucz się Gita na poziomie kodu.