Метод rfind() и find() в Python
Метод rfind() возвращает наивысший индекс подстроки (если найден). Если не найден, возвращается -1.
Параметры
Метод rfind() в Python принимает не более трех параметров:
- sub ‒ это подстрока, которую нужно искать в строке str .
- start и end (необязательно) ‒ поиск подстроки выполняется в str [start: end].
Возвращаемое значение
Метод возвращает целочисленное значение:
- Если подстрока существует внутри строки, он возвращает наивысший индекс, в котором найдена подстрока.
- Если подстроки не существует внутри строки, возвращается -1.

Пример 1: Без начального и конечного аргументов
Пример 2: С начальным и конечным аргументами
Метод find() возвращает индекс первого вхождения подстроки (если найден). Если не найден, возвращается -1.
Метод find в Python

Python
Описание метода find()
Функция find() в языке python (питон) используется для поиска первого вхождения символа или подстроки во всей строке, либо только в ее отрезке.
Примечательно, что если в качестве аргумента, который необходимо найти, отправить подстроку, то ошибка не вернется. Вместо этого функция решит найти подстроку в строке python . Конечно, сначала будет казаться, что лучше бы возвращался и начальный и конечный элемент, но в таком случае тогда придется создавать список.
Да и к тому же, если разработчик будет знать размер искомой строки, индекс первого элемента, то он может получить и индекс последнего элемента, прибавив размер подстроки и отняв
1. Метод find работает только со строками , для списков и словарей используются совсем другие методы.
Если же нужная подстрока или буква не были найдены внутри строки, то возвращается значение -1.
Кстати, если вы уже думаете сделать конструкцию, в которой с помощью функции find определяется индекс, а после сразу происходит вывод по этому индексу, то это плохая идея. Если буква не будет найдена, то будет возвращено значение -1 (как мы уже говорили).
Если обратиться к минус первому элементу, то питон вернет самый последний элемент (например, в слово «сайт» элемент с индексом -1 – это «т»). Дело в том, что когда в качестве индекса указывается отрицательное число, то минус исчезает, но отсчет начинается с конца.
Следственно, при работе с find стоит дополнительно использовать условия (о них читайте в предыдущих статьях).

Find – это своего рода человек с лупой, который выискивает нужную вещь по дорожке (строке)
Синтаксис
Find не является самостоятельной функцией, а только методом для объекта типа string.
То есть для начала необходимо создать переменную строкового типа, а после обратиться через него к нужной функции.
Сам синтаксис функции выглядит следующим образом:
Вместо «string» необходимо указать строку, в которой происходит поиск, вместо char подставляем букву или подстроку, которые нужно найти. Последние два аргумента необходимы для установки начального и конечного значения, но об этом немного позже. Разберемся на конкретном примере.

Функция возвращает индекс символа
Поиск символа или подстроки в строке
У нас есть последовательность букв английского алфавита, но только в этой последовательности не все буквы, а потому вручную указать индекс не получится. Необходимо по введенной букве, определить ее индекс и вывести все буквы после этого индекса. И так, как будет выглядеть решение:
Готово. Если бы не find, тогда разработчику пришлось бы создавать цикл while с счетчиком, сверять каждый элемент с введенным пользователем, а после, если символ был найден, выводить его индекс, который находился в счетчике. Не совсем удобно, потому рекомендуем пользоваться только готовой функцией.

Как мы видим, программа работает как часы
А если вспомнить, что с помощью циклов будет проблематично проверить подстроку, то это еще сильнее повышает любовь к встроенным функциям типа этой.
Кстати, давайте попробуем искать не по символу, а по подстроке. Сразу пример из жизни: вспомните школьные года, когда на некоторых предметах было деление по группам. Представим, что необходимо вывести две части строки.
Первая часть – это первая группа, а вторая – вторая группа. Разделять их будет введённое имя.
Реализация (не забывайте, регистр важен):
и снова результат на картинке ниже.

Результат выполнения программы
Невероятно крутой инструмент, и при этом простой в исполнении.
Поиск символа в подстроке со start и end
Периодически возникает необходимость искать только в отдельном отрезке строки. Например, если на вход поступает строка формата: «Запись № 0001 *текст*», то искать нужно только после цифр, так как они не несут никакой ценности.
Или допустим есть строка: «*имена* — студенты, пришедшие на пересдачу». Зачем обрабатывать эту константную фразу, ведь важны только имена. Так вот, чтобы ограничить отрезок, где будет проверяться элемент, используются необязательные аргументы start и end. Соответственно, start отвечает за начало отрезка строки, а end за конец.
По умолчанию start = 0, а end = -1. Название аргумента указывать необязательно.
То есть, в функции в первую очередь указывается символ для поиска, после начальный элемент, и только после этого конечный элемент.
Рассмотрим пример, когда нужно искать только с определенного элемента:

Результат выполнения
Как видно на скриншоте, слово «сегодня» есть в переменной, но оно не было найдено, так как не принадлежит промежутку, указанному при вызове метода, а потому в учет не принималось.
Проверка есть ли символ в строке
Самые смекалистые могли заметить, что обращение к найденному индексу – это не единственная особенность метода find. С помощью него разработчик также может проверить наличие подстроки в переменной. Это действительно так.
Достаточно сделать условие: если find вернул отрицательное число, значит нужной подстроки нет, иначе есть. Однако, это нерационально. Для таких случаев в python предусмотрено ключевое слово «in».
Чтобы проверить, есть ли подстрока в строке необходимо использовать следующий синтаксис:
Если word есть в string, то x присвоится True, иначе False. Рассмотрим на реальном примере:
Как вы уже догадались, первый вывод будет True, а второй False. Так что на будущее: не придумывайте велосипед, если есть готовая замена.
Метод rfind()
Во всех примерах выше мы могли находить первое вхождение символа или подстроки. Однако, что делать, если считывать необходимо с конца. В таком случае необходимо использовать похожую по написанию функцию rfind.
Она начинает парсинг элементов с конца. И, кстати, нумерует она символы также сначала.
Допустим, если есть переменная из 20 символов, а нужный символ окажется на 18 позиции, то функция и вернет 18, а не 2 (ведь 20 – 18 = 2, а проверяет то она с конца).
Это полезно, главное не запутаться.
И как обычно пример:
Программа выведет число 65, но если бы мы использовали find, то ответ был бы 55. Потому что тогда программа сначала бы увидела отдельную букву «ф», а после только «ф» в слове «фольклор».

Наглядное описание работы двух методов
Вместо заключения
Сначала кажется, что метод find не несет никакой пользы. В будущем в практике часто придется искать индексы элементов по их значению. Например, чтобы делить строки или анализировать содержимое, ну или очищать мусорный контент. Главное научиться, а применение всегда найдется. Благодарим за прочтение.
Узнайте, какие встроенные методы Python используются в строковых последовательностях

Строка — это последовательность символов. Встроенный строковый класс в Python представлен строками, использующими универсальный набор символов Unicode. Строки реализуют часто встречающуюся последовательность операций в Python наряду с некоторыми дополнительными методами, которые больше нигде не встречаются. На картинке ниже показаны все эти методы:
Давайте узнаем, какие используются чаще всего. Важно заметить, что все строковые методы всегда возвращают новые значения, не меняя исходную строку и не производя с ней никаких действий.
Код для этой статьи можно взять из соответствующего репозитория Github Repository.
1. center( )
Метод center() выравнивает строку по центру. Выравнивание выполняется с помощью заданного символа (пробела по умолчанию).
Синтаксис
str.center(length, fillchar) , где:
- length — это длина строки [обязательный параметр]
- fillchar—это символ, задающий выравнивание [на выбор]
Пример

2. count( )
Метод count() возвращает счёт или число появлений в строке конкретного значения.
Синтаксис
str.count(value, start, end) , где:
- value — это подстрока, которая должна быть найдена в строке [обязательный параметр]
- start — это начальное значение индекса в строке, где начинается поиск заданного значения [на выбор]
- end — это конечное значение индекса в строке, где завершается поиск заданного значения [на выбор]
Пример

3. find( )
Метод find() возвращает наименьшее значение индекса конкретной подстроки в строке. Если подстрока не найдена, возвращается -1.
Синтаксис
str.find(value, start, end) , где:
- value или подстрока, которая должна быть найдена в строке [обязательный параметр]
- start — это начальное значение индекса в строке, где начинается поиск заданного значения [на выбор]
- end — это конечное значение индекса в строке, где завершается поиск заданного значения [на выбор]
rfind(): метод rfind() такой же, как find(), за исключением того, что он возвращает наибольшее значение индекса подстроки.
Пример

4. swapcase( )
Метод swapcase() возвращает копию строки, преобразуя все заглавные буквы в строчные, и наоборот.
Синтаксис
Пример

5. startswith( ) and endswith( )
Метод startswith() возвращает True, если строка начинается с заданного значения. В противном случае возвращает False.
С другой стороны, функция endswith() возвращает True, если строка заканчивается заданным значением. В противном случае возвращает False.
Синтаксис
string.startswith(value, start, end)
string.endsswith(value, start, end)
- value — это искомая строка в строке [обязательный параметр]
- start — это начальное значение индекса в строке, где начинается поиск заданного значения [на выбор]
- end — это конечное значение индекса в строке, где завершается поиск заданного значения [на выбор]
Пример

6. split( )
Метод split() возвращает список слов в строке, где разделителем по умолчанию является пробел.
Синтаксис
- sep: разделитель, используемый для разделения строки. Если не указано иное, разделителем по умолчанию является пробел [на выбор]
- maxsplit: обозначает количество разделений. Значение по умолчанию -1, что значит «все случаи» [на выбор]
Вариант
-
): разделяет строку справа.
Пример

7. Строка заглавными буквами
1. capitalize( )
Метод capitalize() меняет на заглавную букву только первый символ строки.
Синтаксис
2. upper( )
Метод upper() делает заглавными все буквы в строке.
Синтаксис
3. string.title( )
Метод title() делает заглавными все первые буквы выбранной строки.
Синтаксис
Пример

8. ljust( ) и rjust( )
С помощью заданного символа (по умолчанию пробел) метод ljust() возвращает вариант выбранной строки с левым выравниванием. Метод rjust() выравнивает строку вправо.
Синтаксис
- length: длина строки, которая должна быть возвращена [обязательный параметр]
- character: символ для заполнения незанятого пространства, по умолчанию являющийся пробелом [на выбор]
Пример

9. strip( )
Метод strip() возвращает копию строки без первых и последних символов. Эти отсутствующие символы — по умолчанию пробелы.
Синтаксис
character: набор символов для удаления [на выбор]
Варианты
-
: удаляет символы с начала строки. : удаляет символы с конца строки.

10. zfill( )
Метод zfill() добавляет нули в начале строки. Длина возвращаемой строки зависит от заданной ширины.
Синтаксис
- width: указывает длину возвращаемой строки. Нули не добавляются, если параметр ширины меньше длины первоначальной строки.
Пример

Заключение
В статье мы рассмотрели лишь некоторые встроенные строковые методы в Python. Есть и другие, не менее важные методы, с которыми при желании можно ознакомиться в соответствующей документации Python.