Метод str.index() в Python
Метод str.index() возвращает индекс подстроки внутри строки (если она найдена). Если подстрока не найдена, возникает исключение.
Синтаксис метода в Python для строки:
Параметры
Метод принимает три параметра:
- sub ‒ подстрока для поиска в строке str.
- start и end (необязательно) ‒ поиск подстроки выполняется в str [start: end].
Возвращаемое значение
- Если подстрока существует внутри строки, он возвращает наименьший индекс в строке, где находится подстрока.
- Если подстроки не существует внутри строки, возникает исключение ValueError.
Модуль аналогичен методу find() для строк.
Единственное отличие состоит в том, что метод find() возвращает -1, если подстрока не найдена, тогда как index() выдает исключение.
Пример 1: Только с аргументом подстроки
sentence = 'Python programming is fun.' result = sentence.index('is fun') print("Substring 'is fun':", result) result = sentence.index('Java') print("Substring 'Java':", result)
Substring 'is fun': 19 Traceback (most recent call last): File "", line 6, in result = sentence.index('Java') ValueError: substring not found
Примечание: Индекс в Python начинается с 0, а не с 1. Таким образом, встречается 19, а не 20.
Пример 2: С аргументами start и end
sentence = 'Python programming is fun.' # Substring is searched in 'gramming is fun.' print(sentence.index('ing', 10)) # Substring is searched in 'gramming is ' print(sentence.index('g is', 10, -4)) # Substring is searched in 'programming' print(sentence.index('fun', 7, 18))
15 17 Traceback (most recent call last): File "", line 10, in print(quote.index('fun', 7, 18)) ValueError: substring not found
Методы find() и rfind() в Python
Метод find() в Python используется для поиска индекса подстроки в строке.
Эта функция возвращает наименьший индекс в строке, где подстрока «sub» находится внутри среза s [начало: конец].
Начальное значение по умолчанию – 0, и это необязательный аргумент.
Конечное значение по умолчанию – длина строки, это необязательный аргумент.
Если подстрока не найдена, возвращается –1.
Нам следует использовать метод find(), когда мы хотим узнать позицию индекса подстроки. Для проверки наличия подстроки мы можем использовать оператор in.
Примеры
Давайте посмотрим на несколько простых примеров метода find().
s = 'abcd1234dcba' print(s.find('a')) # 0 print(s.find('cd')) # 2 print(s.find('1', 0, 5)) # 4 print(s.find('1', 0, 2)) # -1
rfind()
Метод rfind() похож на find(), за исключением того, что поиск выполняется справа налево.
s = 'abcd1234dcba' print(s.rfind('a')) # 11 print(s.rfind('a', 0, 20)) # 11 print(s.rfind('cd')) # 2 print(s.rfind('1', 0, 5)) # 4 print(s.rfind('1', 0, 2)) # -1
Как найти все индексы для подстроки
Строка find() и rfind() в Python возвращает первый совпавший индекс. Мы можем определить пользовательскую функцию для поиска всех индексов, по которым находится подстрока.
def find_all_indexes(input_str, search_str): l1 = [] length = len(input_str) index = 0 while index < length: i = input_str.find(search_str, index) if i == -1: return l1 l1.append(i) index = i + 1 return l1 s = 'abaacdaa12aa2' print(find_all_indexes(s, 'a')) print(find_all_indexes(s, 'aa'))