Как я могу найти первое вхождение подстроки в строке python?

Итак, если моя строка - "чувак - классный чувак".
Я бы хотел найти первый индекс "чувак":

mystring.findfirstindex('dude') # should return 4

Что такое команда python для этого?
Спасибо.

Ответ 1

find()

>>> s = "the dude is a cool dude"
>>> s.find('dude')
4

Ответ 2

Краткий обзор: index и find

Рядом с методом find также есть index. find и index оба дают тот же результат: возвращают позицию первого вхождения, , но, если ничего не найдено index будет поднимать ValueError, тогда как find возвращает -1, По скорости оба имеют одинаковые результаты тестов.

s.find(t)    #returns: -1, or index where t starts in s
s.index(t)   #returns: Same as find, but raises ValueError if t is not in s

Дополнительные знания: rfind и rindex:

В общем случае find и index возвращают наименьший индекс, где запущена строка с передачей, а rfind и rindex возвращает наибольший индекс, в который он запускается Большинство алгоритмов поиска строк ищут от слева направо, поэтому функции, начинающиеся с r, показывают, что поиск происходит от справа налево.

Поэтому, если вероятность того, что элемент, который вы ищете, близок к концу, чем к началу списка, rfind или rindex будет быстрее.

s.rfind(t)   #returns: Same as find, but searched right to left
s.rindex(t)  #returns: Same as index, but searches right to left

Источник: Python: Visual QuickStart Guide, Тоби Дональдсон

Ответ 3

реализовать это алгоритмическим способом, не используя встроенную функцию Python. Это может быть реализовано как

def find_pos(string,word):

    for i in range(len(string) - len(word)+1):
        if string[i:i+len(word)] == word:
            return i
    return 'Not Found'

string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4