Python rfind: Нахождение индекса последней подстроки в строке
В этом руководстве вы узнаете, как использовать метод rfind()
в Python для поиска последнего индекса подстроки в строке. По сути, этот метод ищет с правой стороны и возвращает индекс крайнего правого подстрока.
Вы научитесь использовать метод Python .rfind()
, узнаете о его параметрах, чем он отличается от .rindex()
, и как использовать метод для проверки, существует ли подстрока только один раз в строке.
Оглавление
Python rfind
: Найти индекс последней подстроки в строке
rfind
: Найти индекс последней подстроки в строкеМетод .rfind()
в Python работает похоже на метод .find()
в Python.
Метод .find()
ищет подстроку в строке и возвращает ее индекс. Однако метод .rfind()
ищет с правой стороны текста и возвращает первый найденный индекс – то есть возвращает последний индекс данной подстроки в строке.
Некоторые важные моменты о методе .rfind()
:
Возвращаемый индекс отмечает начальный индекс подстроки (т.е. для многобуквенной подстроки будет возвращен индекс первой буквы)
Если подстрока не существует, метод возвращает
-1
Давайте посмотрим, как можно использовать метод .rfind()
для поиска индекса последней подстроки в строке в Python:
# Использование Python .rfind() для поиска индекса последней подстроки
sentence = 'She sells seashells by the sea-shore'
idx = sentence.rfind('sea')
print(idx)
# Возвращает 27
Здесь мы видим, что метод вернул позицию индекса 27.
Теперь поищем подстроку, для которой мы знаем, что она не существует:
# Использование Python .rfind() для поиска индекса последней подстроки
sentence = 'She sells seashells by the sea-shore'
idx = sentence.rfind('buys')
print(idx)
# Возвращает -1
Мы видим, что поиск 'buys' возвращает позицию индекса -1, что указывает на отсутствие подстроки в строке.
Как использовать Python rfind
в подстроке
rfind
в подстрокеМетод .rfind()
в Python также позволяет искать внутри подстроки большей строки, используя параметры start=
и end=
.
Посмотрим, как можно ограничить поиск подстроки:
# Использование Python .rfind() для поиска индекса последней подстроки с использованием start= и end=
sentence = 'She sells seashells by the sea-shore'
print(sentence.rfind('sea', 5, 20)) # Поиск: 'ells seashells '
print(sentence.rfind('sea', 0, 30)) # Поиск: 'She sells seashells by the sea'
print(sentence.rfind('sea', 0, -1)) # Поиск: 'She sells seashells by the sea-shor'
# Возвращает:
# 10
# 27
# 27
Различия между Python rfind
и rindex
rfind
и rindex
В Python есть два очень похожих метода: .rfind()
и .rindex()
.
Эти два метода делают практически одно и то же, с одним существенным различием: метод .rfind()
не вызовет ошибку, если данная подстрока не существует, в то время как метод .rindex()
вызовет ValueError.
Посмотрим, как это работает на практике:
# Различие между .rfind() и .rindex()
sentence = 'She sells seashells by the sea-shore'
print(sentence.rfind('buys'))
print(sentence.rindex('buys'))
# Возвращает:
# -1
# ValueError: подстрока не найдена
Проверка, существует ли подстрока только один раз в строке Python
Бывают ситуации, когда вы хотите проверить, существует ли подстрока только один раз в строке Python.
Для этого можно использовать метод .rfind()
в Python совместно с методом .find()
.
Это работает путем сравнения, возвращают ли два метода одинаковый индекс. Причина в том, что если индекс первого и последнего вхождения подстроки совпадает, значит подстрока существует только один раз.
# Проверка, существует ли подстрока только один раз в строке
sentence = 'She sells seashells by the sea-shore'
def single_substring(string, substring):
return string.rfind(substring) == string.find(substring)
print(single_substring(sentence, 'seashells'))
print(single_substring(sentence, 'sea'))
# Возвращает:
# True
# False
Давайте рассмотрим, что мы сделали:
Мы определили функцию
single_substring()
, которая принимает строку и подстроку в качестве аргументовФункция возвращает логическое значение, оценивая, совпадают ли результаты методов
.rfind()
и.find()
Функция вернет True, если строка существует только один раз, и False, если существует несколько раз (или не существует вообще)
Заключение
В этом руководстве вы узнали, как использовать метод .rfind()
в Python. Метод ищет подстроку в строке Python и возвращает индекс крайнего правого подстрока. Если подстрока не найдена, возвращается значение -1
.
Вы научились использовать метод и все его аргументы. Вы также узнали, как использовать аргументы метода для поиска только в подстроке. Кроме того, вы изучили различия между методами .rfind()
и .rindex()
в Python. Наконец, вы научились реализовывать метод .rfind()
с нуля.
Чтобы узнать больше о методе .rfind()
, ознакомьтесь с официальной документацией..
Last updated