Всіх вітаю! Сьогодні ми розглянемо метод index() у Python, приклади його застосування та відмінність між методом find().
Суть методу
Метод index() отримує деяке значення у якості параметра і намагається знайти його у визначеному рядку. Після того, як він знаходить це значення, ми отримуємо індекс цього значення у рядку.
Крім того, даний метод має ще параметри start та end, які дозволяють вказати початковий та кінцевий індекси рядка, де буде здійснюватися пошук. Таким чином можна обмежити область пошуку значення у рядку.
Використання у коді
Перший приклад
Ось перший приклад:
simple_text = "Something to write about..."
word_in_text = simple_text.index("write")
print(word_in_text)Тут ми шукаємо слово “write“ у рядку simple_text і в результаті отримуємо індекс початку цього слова — 13.
Тобто, 13 — це індекс, де стоїть перша літера слова “write”, яке ми якраз і шукали. Це можна легко визначити, самостійно рахуючи індекси.
Другий приклад
У другому прикладі ми вказали область пошуку послідовності у рядку за допомогою параметрів start та end у методі index():
simple_text = "Something to write about..."
word_in_text = simple_text.index(" ", 10, 24)
print(word_in_text)Отже, тут ми шукаємо в області від 10-го індексу до 24-го. У рядку це частина “to write about”. У цьому випадку ціль нашого пошуку — пробіл.
Ось результат:
12Тобто метод вказав на пробіл, який знаходиться між словами “to” та “write” , а отже, має 12-й індекс.
Відмінність index() від find()
Python має багацько вбудованих методів для роботи з рядками, але деякі з них можуть здатися дуже схожими, такими, що майже не мають відмінностей. Це також стосується методів index() та find().
По суті, ці методи виконують ідентичну роботу, але справа у тому, що їхня поведінка у разі незнаходження заданого значення відрізняється.
Метод index() одразу повертає помилку, якщо не зміг знайти вказану йому послідовність у рядку, а метод find() просто повертає значення -1 без ніяких повідомлень про помилку.
Тепер пропоную поглянути на це у коді, ось приклад із методом index():
simple_text = "Something to write about..."
word_in_text = simple_text.index("topic")
print(word_in_text)Результат:
ValueError: substring not foundЯк бачимо, метод index() одразу повернув помилку, бо не зміг знайти слово “topic” у рядку.
А ось приклад із методом find():
simple_text = "Something to write about..."
word_in_text = simple_text.find("topic")
print(word_in_text)Результат:
-1У ідентичній ситуації метод find() не став скаржитися, а просто повернув значення -1.
Висновок
Метод index() шукає відповідне значення у рядку та повертає його індекс. Те саме робить і метод find(), але вони по-різному реагують на випадок незнаходження заданого значення.