Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы
Что такое Python String.find()?
Метод String.find() в Python возвращает индекс первого вхождения указанной подстроки в строке. Если подстрока не найдена, он корректно возвращает -1 вместо выброса исключения, что делает его удобным выбором для поиска подстрок.
В этом руководстве вы научитесь эффективно использовать find(), изучите его параметры, сравните с родственными методами и даже подсчитаете, сколько раз подстрока появляется.
- Понимание String.find()
- Синтаксис и параметры
- Использование аргументов по умолчанию
- Указание начального индекса
- Определение диапазона старта и конца
- Поиск позиций подстрок
- Сравнение с rfind()
- Сравнение с index()
- Подсчёт вхождений подстроки
Синтаксис Python string find()
Сигнатура метода проста:
string.find(substring, start, end)
Параметры
- substring — искомый текст.
- start (необязательный) — индекс, с которого начинать поиск; по умолчанию
0. - end (необязательный) — индекс, где заканчивать поиск; по умолчанию длина строки.
Использование find() со значениями по умолчанию
Когда start или end не указаны, find() сканирует всю строку с начала. Возвращает индекс первого совпадения или -1, если ничего не найдено.
Пример:
mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials is at:", mystring.find("Tutorials"))
Вывод:
The position of Tutorials is at: 12
Указание начального индекса
Передача аргумента start ограничивает поиск, начиная с этой позиции до конца строки.
Пример:
mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials is at:", mystring.find("Tutorials", 20))
Вывод:
The position of Tutorials is at 48
Определение диапазона старта и конца
Предоставляя оба start и end, можно ограничить поиск конкретным срезом строки.
Пример:
mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials is at:", mystring.find("Tutorials", 5, 30))
Вывод:
The position of Tutorials is at 12
Поиск позиций и обработка отсутствующих подстрок
Вот как ведёт себя find(), когда подстрока присутствует и когда отсутствует.
Пример:
mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Best site is at:", mystring.find("Best site", 5, 40))
print("The position of Guru99 is at:", mystring.find("Guru99", 20))
Вывод:
The position of Best site is at: 27 The position of Guru99 is at: -1
Сравнение с rfind()
rfind() похож на find(), но возвращает наибольший индекс, где встречается подстрока. Если подстрока отсутствует, оба метода возвращают -1.
Пример:
mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials using find() : ", mystring.find("Tutorials"))
print("The position of Tutorials using rfind() : ", mystring.rfind("Tutorials"))
Вывод:
The position of Tutorials using find() : 12 The position of Tutorials using rfind() : 48
Сравнение с index()
Метод index() ведёт себя как find(), но выбрасывает ValueError, когда подстрока отсутствует.
Пример:
mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials using find() : ", mystring.find("Tutorials"))
print("The position of Tutorials using index() : ", mystring.index("Tutorials"))
Вывод:
The position of Tutorials using find() : 12 The position of Tutorials using index() : 12
Когда подстрока не найдена:
mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials using find() : ", mystring.find("test"))
print("The position of Tutorials using index() : ", mystring.index("test"))
Вывод:
The position of Tutorials using find() : -1 Traceback (most recent call last): File "task1.py", line 3, inprint("The position of Tutorials using index() : ", mystring.index("test")) ValueError: substring not found
Подсчёт вхождений подстроки
Чтобы посчитать, сколько раз подстрока появляется, итерируйтесь по строке и многократно вызывайте find() с обновлённым стартовым индексом.
Пример:
my_string = "test string test, test string testing, test string test string"
startIndex = 0
count = 0
for _ in range(len(my_string)):
k = my_string.find('test', startIndex)
if k != -1:
startIndex = k + 1
count += 1
print("The total count of substring test is:", count)
Вывод:
The total count of substring test is: 6
Ключевые выводы
find()возвращает индекс первого совпадения или-1, если отсутствует.- Параметры:
substring, опциональныеstart(по умолчанию 0),end(по умолчанию длина строки). - Используйте
startдля начала поиска с конкретной позиции. - Используйте
startиendдля ограничения поиска срезом подстроки. rfind()возвращает индекс последнего совпадения.index()строже, выбрасывает ошибку, когда подстрока отсутствует.- Цикл с
find()может подсчитать общее количество вхождений.
Python
- Метод String.length() в Java: как получить длину строки (пример)
- Мастерство метода strip() в Python: подробное руководство и практические примеры
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Мастерство строк форматирования format() в Python: понятные примеры
- Python len(): практическое руководство по измерению длины объектов
- Освоение лямбда-функций Python: практические примеры и лучшие практики
- Функция round() в Python: подробное объяснение с практическими примерами
- Освоение функции map() в Python: синтаксис, примеры и лучшие практики
- Python timeit(): измерение времени выполнения с практическими примерами
- Понимание type() и isinstance() в Python: практические примеры