← Все вопросы

find или index — чем отличаются для поиска подстроки?

Задан 20 месяцев назад1.3к просмотров3 ответа
15

Оба вроде ищут позицию подстроки. В чём разница и что когда брать?

s = "hello world"
s.find("world")
s.index("world")

3 ответа

26
✓ Принятый ответ — помог автору

Разница в одном: что происходит, когда подстрока НЕ найдена.

  • find() вернёт -1
  • index() бросит ValueError
"hello".find("z")   # -1
"hello".index("z")  # ValueError!

Если отсутствие подстроки — это нормальная ситуация, бери find и проверяй на -1. Если отсутствие — это ошибка, которую надо ловить, бери index. Оба возвращают индекс ПЕРВОГО вхождения слева.

Антон Солдатов топовое объяснение, всё разложил по полочкам 👍 · 19 месяцев назад
Sega Rainbow автор: то что надо, принято · 19 месяцев назад
9

Кратко: find — безопасный (-1), index — кидает исключение. Для просто «есть или нет» вообще используй in.

6

У обоих есть необязательные аргументы start/end, чтобы искать не с начала: s.find("o", 5). И ещё есть rfind/rindex — ищут с конца.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект