7 sposobów, jak sprawdzić, czy łańcuch Pythona zawiera podciąg

Praca z ciągami znaków jest częstym zadaniem w Pythonie. Często musisz dowiedzieć się, czy łańcuch zawiera inny ciąg.

Najprostsze metody sprawdzania, czy ciąg Pythona zawiera podłańcuch, to operator „in”, funkcja find() i metoda index(). Bardziej złożone scenariusze można rozwiązać za pomocą wyrażeń regularnych lub zewnętrznej biblioteki, takiej jak Pandas.

Ten artykuł pokazuje:

  • cztery proste metody

  • dwie bardziej złożone funkcje wyrażeń regularnych

  • metoda wykorzystująca bibliotekę Pandas

Nauczysz się każdej techniki poprzez przykłady ich składni i użycia. Otrzymasz również wskazówki, która metoda jest najlepsza dla różnych wymagań.

Zacznijmy!

Spis treści

Podstawy łańcuchów Pythona

Ciąg znaków w Pythonie to sekwencja znaków używana do reprezentowania danych tekstowych. Mogą zawierać litery, cyfry, symbole i spacje.

Jest to jeden z wbudowanych typów danych Pythona i można go utworzyć za pomocą:

  • pojedyncze cytaty (' ')

  • podwójne cudzysłowy („”)

  • potrójne cudzysłowy (”' ”' lub „”” „””)

Ciągi znaków są indeksowane, co oznacza, że ​​można uzyskać dostęp do określonych znaków, odwołując się do ich numeru indeksu. Początkowy indeks to 0, co oznacza, że ​​pierwszy znak łańcucha ma indeks 0, drugi ma indeks 1 i tak dalej.

Następnie przyjrzymy się sposobom sprawdzania podciągów.

4 najprostsze sposoby sprawdzania podciągów

Python zapewnia wiele sposobów sprawdzania, czy określony podłańcuch istnieje w większym łańcuchu. Niektóre są bardziej złożone niż inne. W przypadku najbardziej podstawowych kontroli najprostszymi metodami są operator in lub jedna z trzech metod łańcuchowych.

  1. w operatorze

  2. metoda find().

  3. metoda index().

  4. metoda count().

7 sposobów, jak sprawdzić, czy łańcuch Pythona zawiera podciąg

1. W Operatorze

Operator „in” w Pythonie to prosty i intuicyjny sposób sprawdzania, czy jeden ciąg istnieje w innym ciągu. Ten operator sprawdza członkostwo i zwraca wartość logiczną:

  • Prawda, jeśli podłańcuch znajduje się w ciągu głównym

  • Fałsz, jeśli tak nie jest

Oto przykładowy kod:

s = "Hello, world!"
sub = "world"
result = sub in s
print(result)  # Output: True

W operatorze „in” rozróżniana jest wielkość liter. Oznacza to, że traktuje małe i wielkie litery jako różne. Powyższy kod nie znajdzie podciągu „hello”, więc operator zwraca fałsz.

Jeśli chcesz przeprowadzić kontrolę bez uwzględniania wielkości liter, możesz przekonwertować zarówno główny ciąg, jak i podłańcuch na tę samą wielkość liter przed wykonaniem sprawdzenia:

s = "Hello, world!"
sub = "hello"
result = sub.lower() in s.lower()
print(result)  # Output: True

Wadą operatora in jest to, że nie podaje on pozycji podłańcucha w ciągu głównym. W tym celu potrzebujesz innej metody opisanej w tej sekcji. Czytaj…

2. Metoda Find().

Metoda find() zwraca pierwszy indeks, w którym pojawia się podłańcuch, lub -1 , jeśli podłańcuch nie został znaleziony.

Wywołujesz metodę find() na łańcuchu s , przekazując substring sub jako argument. Oto przykład:

s = "Hello, world!"
sub = "world"
index = s.find(sub)

if index != -1:
     print("Found at index:", index)  # Output: Found at index: 7
else:
     print("Not found")

Opcjonalnie możesz określić indeks początkowy lub końcowy, aby ograniczyć wyszukiwanie. Wadą tej metody jest to, że zatrzymuje się przy pierwszym wystąpieniu.

3. Metoda Index().

Metoda index() jest bardzo podobna do metody find() z tą różnicą, że zgłasza błąd ValueError , gdy podłańcuch nie zostanie znaleziony. Oznacza to, że należy zawinąć wywołanie w sekcję Try/Except.

Aby użyć metody index() , wywołaj ją na ciągu znaków s i przekaż substring sub jako argument.

s = "Hello, world!"
sub = "world"

try: 
     index = s.index(sub)
     print("Found at index:", index)  # Output: Found at index: 7
except ValueError:
     print("Not found")

Ta metoda zatrzymuje się również na pierwszym podłańcuchu wewnątrz tekstu.

4. Metoda Count().

Metoda .count() zlicza, ile razy podłańcuch występuje w oryginalnym ciągu. Zwraca liczbę całkowitą reprezentującą tę liczbę. Jeśli podciąg nie zostanie znaleziony w ciągu głównym, zwraca 0.

Oto prosty przykład szukania litery „o” w tekście „Witaj, świecie!”:

s = "Hello, world!"
sub = "o"
print(s.count(sub))  # Output:2

2 sposoby dopasowywania ciągów znaków do wyrażeń regularnych

Używanie wyrażeń regularnych (regex) jest nieco bardziej złożone niż metody opisane w poprzedniej sekcji. Dają jednak więcej możliwości wyszukiwania i analizowania tekstu, z którym masz do czynienia.

Dwa z najłatwiejszych sposobów w module re to:

  1. szukaj()

  2. Znajdź wszystko()

7 sposobów, jak sprawdzić, czy łańcuch Pythona zawiera podciąg

1. ponownie.Wyszukaj()

Funkcja search () w module re wyszukuje wzorzec w podanym łańcuchu i zwraca obiekt dopasowania, jeśli zostanie znaleziony. W przeciwnym razie zwraca None .

Domyślnie w funkcji rozróżniana jest wielkość liter. Możesz użyć flagi re.IgnoreCase , aby uniknąć rozróżniania wielkości liter.

Oto prosty przykład użycia instrukcji warunkowych w zależności od tego, czy ciąg zostanie znaleziony:

import re
pattern = "python"
text = "I love Python programming"
match = re.search(pattern, text, re.IGNORECASE)

if match: 
     print("Pattern found")
else:
     print("Pattern not found")

Należy zauważyć, że ta metoda znajduje pierwsze dopasowanie, a następnie zatrzymuje wyszukiwanie. Jeśli chcesz znaleźć wszystkie dopasowania, następny na tej liście jest dla Ciebie.

2. ponownie.Findall()

Ta metoda wyszukuje wszystkie wystąpienia wzorca wyszukiwania w podanym ciągu i zwraca listę zawierającą wszystkie dopasowania.

W tym przykładzie użyto wzorca, który pasuje do jednej lub więcej cyfr w ciągu. Ciąg tekstowy „123, 456, 789” zawiera trzy ciągi cyfr.

import re 

pattern = "d+" 
text = "123, 456, 789" 
numbers = re.findall(pattern, text) 

print(numbers)

Oto odpowiedź z przykładowego kodu: ['123', '456', '789'].

Jak znaleźć podciągi za pomocą pand

7 sposobów, jak sprawdzić, czy łańcuch Pythona zawiera podciąg

Pandas to popularna biblioteka open-source do analizy danych i manipulacji dla Pythona. Zapewnia struktury danych i funkcje potrzebne do manipulowania i analizowania danych strukturalnych.

Jedną z podstawowych struktur danych dostarczanych przez Pandy jest DataFrame. Możesz użyć tej wszechstronnej struktury danych, aby sprawdzić, czy jeden ciąg znaków znajduje się w innym.

Zaletą Pand jest to, że udostępnia pakiety kodu, który trzeba by obszernie pisać w innych językach programowania. W szczególności funkcja zawiera dużo mocy.

str.contains() Funkcja w pandach

Metoda str.contains() sprawdza, czy określony wzorzec lub wyrażenie regularne jest zawarte w ciągu znaków kolumny DataFrame.

Oto przykład, który importuje bibliotekę i wyszukuje ciąg na liście ciągów:

import pandas as pd

# Creating a sample DataFrame 
data = {'fruits': ['apple', 'banana', 'cherry', 'watermelon', 'orange']} 
df = pd.DataFrame(data) 

# Searching for substrings in the 'fruits' column 
has_an = df['fruits'].str.contains(pat='an', regex=False)

# Filtering the DataFrame based on the search results 
filtered_df = df[has_an] 
print(filtered_df)

W tym przykładzie wyszukujemy podłańcuch „an” w kolumnie „owoce” i odpowiednio filtrujemy ramkę DataFrame. Wyjście byłoby:

  • 1 banan

  • 4 pomarańcze

Jeśli szukasz więcej przykładów tego, co potrafią Pandy, obejrzyj ten film:

Wskazówki dotyczące wyboru określonej metody w Pythonie

Wybór metody zależy w dużej mierze od specyficznych wymagań Twojego zadania.

Oto cztery powody, dla których warto wybrać jedną z metod, których nauczyłeś się z tego artykułu, oraz jedną dodatkową metodę, której nauczysz się w innym miejscu na tym blogu:

  1. Szybkość przetwarzania

  2. Musisz znać położenie podciągu

  3. Musisz znać liczbę wystąpień podłańcucha

  4. Chcesz dopasować złożone wzorce

  5. Przeprowadzanie analizy tekstu

1. Szybkość przetwarzania

7 sposobów, jak sprawdzić, czy łańcuch Pythona zawiera podciąg

Perator „w” jest najlepszym wyborem, jeśli po prostu chcesz wiedzieć, czy w łańcuchu istnieje podłańcuch.

W tym celu jest prosty, intuicyjny i szybki. Nie dostarcza jednak informacji o lokalizacji ani liczbie podciągów.

2. Lokalizacja podciągu

Użyj metod .find() lub .index() , jeśli chcesz poznać pozycję pierwszego wystąpienia podłańcucha w ciągu.

Oba zwracają indeks pierwszego wystąpienia podłańcucha.

3. Liczba podłańcuchów

Użyj metody .count() , jeśli chcesz wiedzieć, ile razy podłańcuch występuje w łańcuchu.

4. Złożone wzorce

Jeśli potrzebujesz dopasować złożone wzorce lub przeprowadzić wyszukiwanie bez rozróżniania wielkości liter, wyrażenia regularne są najbardziej elastyczne. Funkcja re.search () może obsługiwać wzorce wykraczające poza proste podłańcuchy i może z łatwością wyszukiwać bez rozróżniania wielkości liter.

Jednak wyrażenia regularne mogą być przesadą w przypadku prostych kontroli podciągów, a także mogą być wolniejsze i bardziej skomplikowane w użyciu i utrzymaniu.

5. Przeprowadzanie analizy tekstu

Zapoznaj się z naszym artykułem na temat analizy tekstu w języku Python , który pokazuje, jak pracować z biblioteką textblob.

Możesz użyć funkcji .tags , aby sprawdzić części mowy lub funkcji .ngram , aby znaleźć słowa, które często występują razem w dokumencie.

Końcowe przemyślenia

Nauczyłeś się siedmiu metod sprawdzania, czy słowo lub obiekt typu string jest zawarty w innym. Obejmowały one operatory członkostwa, funkcje wbudowane, wyrażenia regularne i funkcje Pand.

Każda metoda jest poprawna w niektórych sytuacjach, ale nie we wszystkich. Użyj tego artykułu jako ściągawki , gdy opanujesz język programowania Python i użyjesz najlepszego rozwiązania do zadania analizy łańcuchów.

Pamiętaj, że nie ma uniwersalnej metody. Każde podejście ma swoje zalety i dziwactwa, więc możesz wybrać to, które pasuje do Twojego stylu lub konkretnego problemu, który próbujesz rozwiązać. Ostatecznie Python ma na celu ułatwienie Ci życia, więc korzystaj z jego elastyczności!

Leave a Comment

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.

Funkcje zbierania w Microsoft Power Automate

Funkcje zbierania w Microsoft Power Automate

Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.

Oceń wydajność kodu DAX w DAX Studio

Oceń wydajność kodu DAX w DAX Studio

Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Jak zapisać i załadować plik RDS w R

Jak zapisać i załadować plik RDS w R

Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.