В Python существует множество методов для поиска подстроки в строке. В этой статье мы рассмотрим 12 различных способов проверки наличия подстроки в строке на языке Python.
- Способ 1: использование оператора in
- Метод 2: использование метода find()
- Метод 3: использование метода index()
- Способ 4: использование модуля re
- Метод 5: использование метода openswith()
- Метод 6: использование метода Endswith()
- Метод-7: использование метода Split()
- Метод 8: использование метода separation()
- Метод 9: использование метода count()
- Метод 10: использование метода rfind()
- Метод 11: использование понимания списка
- Метод 12: использование re.findall()
Способ 1: использование оператора in
Оператор in — это один из самых простых и быстрых способов узнать, есть ли в строке подстрока. Если подстрока найдена, оператор вернёт значение True, в противном случае — False.
# Define the main string string = "I live in USA" # Define the substring to be searched substring = "USA" # Use 'in' operator to check if substring is present in string if substring in string: print("Substring found") else: print("Substring not found")
Приведенный выше код проверяет, присутствует ли данная подстрока в данной строке.
- Основная строка хранится в переменной строке, а искомая подстрока хранится в переменной подстроке.
- В коде используется оператор in для проверки наличия подстроки в строке. Если это так, код выводит на консоль «Подстрока найдена». Если нет, код выводит «Подстрока не найдена».
Метод 2: использование метода find()
Метод find() — это ещё один простой способ найти подстроку в строке. Он возвращает индекс первого символа подстроки в строке. Если подстрока не найдена, то возвращается значение -1.
# Define the main string string = "I live in USA" # Define the substring to be searched substring = "USA" # Use the find() method to get the index of the substring index = string.find(substring) # Check if the substring is found if index != -1: print("Substring found at index", index) else: print("Substring not found")
В приведенном выше коде используется метод find() для поиска индекса заданной подстроки в заданной строке.
- Метод find() используется для поиска индекса подстроки в строке, а результат сохраняется в переменной index.
- Если подстрока найдена, индекс будет установлен как индекс первого символа подстроки в строке. Если подстрока не найдена, индексу будет присвоено значение -1.
- Затем код проверяет, не равен ли индекс -1. Если это не так, подстрока найдена, и код выводит «Подстрока найдена по индексу», за которой следует значение индекса.
- Если индекс равен -1, подстрока не найдена и код выводит «Подстрока не найдена».
Метод 3: использование метода index()
Метод index() аналогичен методу find(), но он вызывает исключение ValueError, если подстрока не найдена в строке.
# Search for substring in a given string string = "I live in USA" # The substring we want to search for substring = "live" # Use try-except block to handle potential ValueError if substring is not found try: # Find the index of the substring in the string using the index() method index = string.index(substring) # Print a success message with the index of the substring print("Substring found at index", index) except ValueError: # If the substring is not found, print a message indicating that it was not found print("Substring not found")
Приведенный выше код проверяет, присутствует ли данная подстрока в строке.
- Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «живая».
- В коде используется блок try-кроме для обработки потенциальной ошибки, связанной с невозможностью найти подстроку в строке.
- Метод index() используется для поиска индекса подстроки в строке. Если подстрока найдена, код печатает сообщение, указывающее индекс подстроки в строке.
- Если подстрока не найдена, возникает ошибка ValueError, которая перехватывается блоком исключений, и печатается сообщение, указывающее, что подстрока не найдена.
Способ 4: использование модуля re
Модуль re (регулярные выражения) содержит мощные инструменты для поиска и сопоставления подстрок в тексте.
# Use the re module for pattern matching import re # The string we want to search in string = "I live in USA" # The substring we want to search for substring = "in" # Use the search() method from the re module to find a match match = re.search(substring, string) # Check if a match was found if match: # If a match was found, print a success message print("Substring found") else: # If no match was found, print a failure message print("Substring not found")
Приведенный выше код проверяет, присутствует ли данная подстрока в строке, используя регулярные выражения (регулярное выражение).
- Первая строка import re импортирует модуль re, который предоставляет функции для сопоставления шаблонов в строках.
- Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «в». Затем код использует метод re.search() для поиска соответствия между подстрокой и входной строкой.
- Метод re.search() возвращает объект соответствия, если между подстрокой и входной строкой существует совпадение, в противном случае он возвращает None.
- Затем код использует оператор if, чтобы проверить, найдено ли совпадение. Если совпадение найдено, код печатает сообщение, указывающее, что подстрока найдена.
- Если совпадение не найдено, код печатает сообщение, указывающее, что подстрока не найдена.
Метод 5: использование метода openswith()
Метод openswith() возвращает True, если строка начинается с указанной подстроки. Если же это не так, то возвращается False.
# The string we want to search in string = "I live in USA" # The substring we want to search for substring = "I" # Use the startswith() method to check if the string starts with the substring if string.startswith(substring): # If the string starts with the substring, print a success message print("Substring found") else: # If the string does not start with the substring, print a failure message print("Substring not found")
Приведенный выше код проверяет, находится ли данная подстрока в начале строки.
- Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «Я». В коде используется метод Beginswith(), чтобы проверить, начинается ли входная строка с подстроки.
- Метод Beginswith() возвращает True, если входная строка начинается с подстроки, и False в противном случае. Затем код использует оператор if для проверки результата метода Beginswith().
- Если входная строка начинается с подстроки, код печатает сообщение, указывающее, что подстрока найдена. Если входная строка не начинается с подстроки, код печатает сообщение, указывающее, что подстрока не найдена.
Метод 6: использование метода Endswith()
Метод Endswith() похож на метод Beginswith(), но он возвращает True, если строка заканчивается определённой подстрокой, и False, если это не так.
# The string we want to search in string = "I live in USA" # The substring we want to search for substring = "USA" # Use the endswith() method to check if the string ends with the substring if string.endswith(substring): # If the string ends with the substring, print a success message print("Substring found") else: # If the string does not end with the substring, print a failure message print("Substring not found")
Приведенный выше код проверяет, находится ли данная подстрока в конце строки.
- Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «США». В коде используется метод endwith(), чтобы проверить, заканчивается ли входная строка подстрокой.
- Метод Endswith() возвращает True, если входная строка заканчивается подстрокой, и False в противном случае. Затем код использует оператор if для проверки результата метода Endswith().
- Если входная строка заканчивается подстрокой, код печатает сообщение, указывающее, что подстрока найдена. Если входная строка не заканчивается подстрокой, код печатает сообщение, указывающее, что подстрока не найдена.
Метод-7: использование метода Split()
Метод Split() позволяет разделить строку на список подстрок с использованием указанного разделителя. После этого можно осуществлять поиск нужной подстроки в полученных подстроках.
# The string we want to search in string = "I live in USA" # The substring we want to search for substring = "USA" # Split the string into substrings using the split() method and store the result in a list substrings = string.split(" ") # Check if the substring is in the list of substrings if substring in substrings: # If the substring is in the list, print a success message print("Substring found") else: # If the substring is not in the list, print a failure message print("Substring not found")
Приведенный выше код проверяет, содержится ли данная подстрока внутри строки.
- Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «США». Код разбивает входную строку на подстроки с помощью метода Split() и сохраняет результат в виде списка подстрок.
- Метод Split() разбивает строку на подстроки, используя указанный разделитель(в данном случае пробел).
- Далее код использует оператор in, чтобы проверить, находится ли подстрока в списке подстрок. Если подстрока есть в списке, код печатает сообщение, указывающее, что подстрока найдена.
- Если подстроки нет в списке, код печатает сообщение о том, что подстрока не найдена.
Метод 8: использование метода separation()
Метод separation() делит строку на три части: часть до разделителя, сам разделитель и часть после разделителя.
# The string we want to search in string = "I live in USA" # The substring we want to search for substring = "I" # Use the partition() method to split the string into three parts before, delimiter, after = string.partition(" ") # Check if the first part of the split string is equal to the substring if before == substring: # If the first part is equal to the substring, print a success message print("Substring found") else: # If the first part is not equal to the substring, print a failure message print("Substring not found")
Приведенный выше код проверяет, находится ли данная подстрока в начале строки.
Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «Я». В коде используется метод separation() для разделения входной строки на три части:
- Часть до указанного разделителя, сам разделитель и часть после разделителя. В данном случае разделителем является пробел.
- Метод раздела() возвращает кортеж с тремя элементами: часть до разделителя, сам разделитель и часть после разделителя.
- В коде используется распаковка кортежа, чтобы назначить три части переменным до, разделителю и после.
- Далее код использует оператор if, чтобы проверить, равна ли первая часть разделенной строки (т. е. перед) подстроке.
- Если первая часть равна подстроке, код печатает сообщение, указывающее, что подстрока найдена. Если первая часть не равна подстроке, код печатает сообщение, указывающее, что подстрока не найдена.
Метод 9: использование метода count()
Метод count() возвращает количество вхождений подстроки в строке.
# The string we want to search in string = "I live in USA" # The substring we want to search for substring = "live" # Use the count() method to count the number of times the substring appears in the string count = string.count(substring) # Print the result print("Substring found", count, "times")
Приведенный выше код подсчитывает, сколько раз данная подстрока появляется в строке.
- Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «живая». В коде используется метод count() для подсчета количества раз, которое подстрока появляется в строке.
- Наконец, код использует функцию print() для печати результата, указывающего, сколько раз подстрока была найдена в строке.
Метод 10: использование метода rfind()
Метод rfind() похож на метод find(), но он находит последнее вхождение подстроки в строке. Если подстрока не найдена, метод возвращает -1.
# The string we want to search in string = "I live in USA" # The substring we want to search for substring = "USA" # Use the rfind() method to find the last index of the substring in the string index = string.rfind(substring) # Check if the substring was found if index != -1: # If the substring was found, print the index print("Substring found at index", index) else: # If the substring was not found, print a message print("Substring not found")
Приведенный выше код ищет последнее вхождение заданной подстроки в строку.
- Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «США». Код использует метод rfind() для поиска последнего индекса подстроки в строке.
- Метод rfind() возвращает индекс последнего вхождения подстроки в строку или -1, если подстрока не найдена. Таким образом, код проверяет, не равно ли возвращаемое значение -1, что указывает на то, что подстрока найдена в строке.
- Наконец, код использует функцию print() для печати результата, указывающего индекс последнего вхождения подстроки в строку.
Метод 11: использование понимания списка
# The string we want to search in string = "I live in USA" # The substring we want to search for substring = "USA" # Use a list comprehension to find if the substring exists in the string split into words result = [word for word in string.split() if word == substring] # Check if the result list is not empty if result: # If the result list is not empty, the substring was found print("Substring found") else: # If the result list is empty, the substring was not found print("Substring not found")
Приведенный выше код проверяет, существует ли данная подстрока в строке.
- Входная строка — «Я живу в США», а подстрока, которую мы хотим найти, — «США». Код использует понимание списка для создания списка слов из входной строки, где каждое слово проверяется, равно ли оно заданной подстроке.
- Функция распознавания списка перебирает слова во входной строке, которая разбивается с помощью метода Split(), и добавляет слово в список результатов, если оно равно заданной подстроке.
- Наконец, код использует оператор if, чтобы проверить, не пуст ли список результатов. Если список результатов не пуст, это означает, что подстрока была найдена во входной строке, поэтому код печатает «Подстрока найдена».
- Если список результатов пуст, подстрока не найдена во входной строке, поэтому код печатает «Подстрока не найдена».
Метод 12: использование re.findall()
Функция re.findall() используется для поиска всех непересекающихся совпадений определённого шаблона в строке. Мы можем применить эту функцию, чтобы найти все вхождения подстроки в строку. Для этого нам нужно указать искомую подстроку в качестве шаблона.
# Import the regular expression library 're' import re # The input text to search for the substring text = "I live in USA" # The substring to search for in the text substring = "USA" # Find all occurrences of the substring in the text using the 'findall' method from the 're' library result = re.findall(substring, text) # Print the result print(result)
В приведенном выше коде библиотека регулярных выражений re импортируется и используется для поиска всех вхождений данной подстроки «США» во входной текст «Я живу в США».