У нас есть стандартный встроенный метод в Python для сложных функций. Одним из них является метод rfind(), который работает противоположно методу find(). В методе find() мы возвращаем первый индекс совпадения, а метод rfind() возвращает указанную подстроку из последнего вхождения, наивысшую позицию индекса самой правой совпавшей подстроки из данной строки. Нам нужен метод rfind(), чтобы узнать позицию подстроки, заданной в основной строке. Поскольку метод rfind() чувствителен к регистру, он вернет -1, если подстрока не найдена. Чтобы понять функциональность, давайте посмотрим, как работает метод rfind() в программировании на Python.
Поскольку метод rfind() предназначен для поиска подстроки в заданной строке, синтаксис метода rfind(), который мы используем в python, выглядит следующим образом:
str.rfind( substr, start_index, end_index )
где « str » — первичная строковая переменная , а здесь «rfind()» представляет требуемый поиск, где передаются три аргумента ( substr , start_index , end_index )
Изначально в метод rfind() передаются три параметра. Первый параметр обозначается «substr», который указывает строку, которую необходимо найти в данной строке. Далее идет «start_index», который указывает начальный индекс, с которого начинается поиск. Если в start_index не передается значение, то по умолчанию его значение равно «0», поскольку значение индекса всегда начинается с нуля.
Последним параметром, переданным в метод rfind(), является «end_index», где поиск заканчивается, если в конечном индексе не передано значение, которое является длиной строки -1, принятой в качестве значения по умолчанию.
Этот метод возвращает целочисленное значение, указывающее последнюю правую наивысшую позицию индекса подстроки, если подстрока уже существует внутри строки, или возвращает значение -1, если подстрока не существует в строке.
Это всего лишь базовый пример поиска последнего вхождения подстроки Orange в заданной строке. Мы обозначили основную строку переменной «str1», имеющей значения «Apple, Orange, Mango». Здесь «Result» — это еще одна переменная, которая принимает оранжевый цвет в качестве аргумента через метод str1.rfind(). Вывод программы отображается на экране с помощью функции print().
Str1 = 'Apple,Orange, Mango' Result = Str1.rfind('Orange') print("index of 'orange' in the string =",Result)
Выходное значение индекса равно «6» из строки, которая является наивысшим значением индекса последнего вхождения.
Этот пример программы демонстрирует работу метода rfind() во всей строке. Пример метода инициализации строки первичной переменной «rfind()» с помощью «str2». В этом коде «Result» вернет самый высокий индекс подстроки «rfind()» и подстроки «example» из последнего вхождения. Функция print() поможет отобразить вывод.
Str2 = 'rfind() method example' Result = str2.rfind('rfind') print ("Substring 'rfind' index position :", Result ) Result = str2.rfind('example') print ("Substring 'example' index position :", Result )
Отображение вывода позиции индекса подстроки «rfind», которая находится в «0», а подстрока «example» находится в позиции индекса «15»
Теперь найдем метод rfind() в подстроке из этого примера. Взяв «Python methods» в виде строки и назначив ее переменной «str3». Найдем индексы букв «P», «h» и слова «methods» из «str3». Мы получим самый правый индекс из этих соответствующих букв в данной строке.
Str3='Python methods' print("Index of 'P': ", str3.rfind('P')) print("Index of 'h': ", str3.rfind('h')) print("Index of 'methods': ", str3.rfind('methods'))
Мы получаем вывод после запуска этой программы, значение индекса «p» в 0, «h» в 10 и слово «methods» в позиции 7.
Во всех приведенных выше примерах мы находим индексы подстроки. Ограничение не установлено, но теперь мы установим ограничение подстроки, задав значение начального индекса и конечное значение индекса, чем метод rfind() будет искать только в заданном диапазоне.
В этом конкретном коде «str1» дал «Finding the index of this string». Из этого «str1» мы должны найти позицию «index», которую мы инициализируем с помощью «str2». Поскольку у нас есть первый оператор печати, str1.rfind() принимает только подстроку «str2», ограничение не установлено, поэтому по умолчанию он принимает ‘0’ в качестве start_index и end_index будет длиной строки. Результат отображается после выполнения этой программы.
str1 = "Finding the index of this string";
str2 = "index";
print (str1.rfind(str2))
Результат передачи одного аргумента «str2» в методе rfind() отображается со значением индекса 12. Это означает, что «str2» имеет 12 индексов в строке.
Поскольку вывод приведенной выше запущенной программы показан без установки параметров начала и конца, если мы хотим найти среднюю позицию в строке, мы должны указать индексы начала и конца параметра.
Давайте напечатаем программу для «str1» и передадим аргумент «str2», который нужно найти, «start_index» имеет значение «5», а «end_index» — «20». Таким образом, поиск начинается между «5» и «20». Таким образом, вывод другого оператора и установка значений «strat_index» на «20» и «end_index» на «5» запустит поиск между «20» и «5».
str1 = "Finding the index of this string" ;
str2 = "index"; print (str1.rfind(str2, 5, 20)) print (str1.rfind(str2, 20, 5))
Мы указали start_index и end_index в приведенной выше программе, поэтому мы получаем вывод, показанный ниже. Для последнего значения печати он возвращает значение -1. Это означает, что подстрока не находится в указанном диапазоне.
Метод rfind() возвращает значение -1, если подстрока не найдена в заданной строке. Давайте запустим пример программы, которая вернет значение -1. В этом примере у нас есть строка «str5», и это строка «Этот язык программирования Python». В этой строке мы должны найти «python», которого нет в строке.
Давайте посмотрим, что будет на выходе из этого кода. Мы используем условие if-else, то есть, если подстрока «python» не равна -1, то функция print () отобразит «subtring found», а если условие ложно, то оператор else напечатает «subtring not found».
str5 = This is programming language code' if (str5.rfind("python') != -1): print ("subtring found ") else: print ("subtring not found")
На экране консоли вывода мы получили приведенный ниже вывод, который отображает «подстрока не найдена», поскольку слово python отсутствует в основной строке.
По всем пунктам и с проверенными результатами приведенного выше примера мы подробно обсудили метод rfind(). Этот метод выполняет поиск справа и возвращает максимальное значение индекса подстроки из данной строки. Все эти примеры просты и работают на терминале Spyder, что поможет вам понять этот метод rfind().