Jeszcze jednym, dość ważnym, tematem przy stringach, jest "testowanie string" pod kątem różnych właściwości. Takie stringi to często dane pochodzące z zewnątrz. Dane wprowadzone do jakiegoś formularza. Dane z bazy. Dane z jakiegoś zewnętrznego zasobu, np. z pliku. Bardzo często takie dane są sprawdzane na wszelkie sposoby. Jest wykonywana tzw. walidacja, zanim cokolwiek więcej z nimi zrobimy. Python też pod tym względem oferuje bardzo szeroki możliwości. Wstępnie sobie zademonstrujemy pewne rzeczy.
Zróbmy sobie zmienną o nazwie s, której zawartością będzie napis 'Witaj'

Możemy sobie zastosować teraz na tej zmiennej różne metody, po kropce podajemy nazwę metody jaką chcemy zastosować, przykładowo islower. Jest to metoda sprawdzająca, czy string rozpoczyna się od małej litery.

Metoda ta zwraca wartość logiczną True lub False, jak poniżej.

Taki prosty przykład testowania string pod kątem określonej właściwości. Oczywiście możemy też testować pod kątem innych właściwości np. czy string składa się wyłącznie z liter, sprawdzimy to metodą isalpha, jak poniżej.

Oczywiście dodanie przykładowo jedynki do napisu, spowoduje, że isaplha zwróci nam False.
Można też użyć podobnej funkcji, ale o innym zakresie, to znaczy isalnum - sprawdza czy są to wyłącznie alfanumeryczne znaki, czyli cyfry oraz litery.

Rezultatem działania powyższego kodu będzie oczywiście True, bowiem w napisie mamy tylko znaki alfanumeryczne - litery i cyfry. Jeśli dodamy inny znak, przykładowo wykrzyknik, to efekt działania będzie inny.

Mamy False, bowiem znak wykrzyknika nie jest znakiem alfanumerycznym. Co więcej, jeśli w napisie będzie biały znak, np. spacji, metoda isalnum też zwróci false - spacja nie jest znakiem alfanumerycznym.
Przykład ten jest dość praktyczny, bowiem funkcjonalność taka ma szeroki praktyczne zastosowanie. Wszelkiego rodzaju walidacja danych z zewnętrznego źródła, które powstały na skutek pewnych operacji wejścia.
Wyszukiwanie w stringach
Teraz może zajmijmy się wyszukiwaniem czegoś w napisach. Jednym słowem, chcemy sprawdzić czy w naszym napisie coś występuje. Do wyszukiwania mamy różne metody, mamy wyrażenia regularne, ale zacznijmy od czegoś prostego. Użyjmy metody find i poszukajmy litery w.

Metoda find, zwróci nam numer indeksu danego znaku w napisie, w tym wypadku zero.

Co się natomiast stanie, jeśli poszukiwanego elementu nie ma w napisie?

Spróbujmy znaleźć literę 'h' w naszym napisie, której to litery, oczywiście w nim nie ma.

Dostaliśmy od metody warość -1, dlaczego? Wynika to po prostu z działania metody find, gdy nie znajdzie ona poszukiwanego elementu, zawsze zwróci -1.
Jeśli chodzi o np. stringi (ale nie tylko), to mamy do dyspozycji prosty, ale i przydatny, operator in. Używany by sprawdzić czy dany element występuje w jakimś zbiorze.

Szukamy po prostu literki a, w naszym stringu s. Innymi słowy zadajemy pytanie "Czy ciąg znaków 'a', znajduje się w ciągu znaków 'witaj 1'?" . I jak się można spodziewać, dostaniemy wartość logiczną True bowiem nasza poszukiwana literka jest częścią naszego napisu.

W przeciwieństwie do metody find, operator in zwróci nam wartość logiczną True lub False. Jak można się też domyślić, nie tylko w napisach ma zastosowanie nasz operator, we wszelkiego rodzaju innych strukturach też możemy sprawdzać czy jest jakiś określony element.
Można też sprawdzić od razu czy coś nie występuje w danej strukturze, poprzez dodanie not przed operatorem in.

I jak się pewnie spodziewasz, tutaj szukamy literki 'b' w naszym ciągu znaków, na który wskazuje zmienna o nazwie s. Oczywiście literki tej nie ma w naszym ciągu znaków, zatem zwrócona wartość to oczywiście True.

Innymi słowy, odpowiedź na pytanie "czy b nie znajduje się w s", to True.
Nie są to wszystkie metody, którymi możemy bawić się ze stringami, mamy jeszcze wiele innych, niektóre są na grafikach poniżej, pochodzących z bloga Flynerd.pl



Zachęcam do testowania i zabawy powyższymi metodami. Może spróbuj zrobić jakiś program, który w zależności od tego czy wpisany tekst zawiera lub nie zawiera czegoś, ma inny efekt działania 😉
