← Все вопросы
find или index — чем отличаются для поиска подстроки?
15
Оба вроде ищут позицию подстроки. В чём разница и что когда брать?
s = "hello world"
s.find("world")
s.index("world")
3 ответа
26
✓ Принятый ответ — помог автору
Разница в одном: что происходит, когда подстрока НЕ найдена.
find()вернёт-1index()бросит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 — ищут с конца.
Ваш ответ
Войдите, чтобы ответить на вопрос.