Итак, если моя строка - "чувак - классный чувак".
Я бы хотел найти первый индекс "чувак":
mystring.findfirstindex('dude') # should return 4
Что такое команда python для этого?
Спасибо.
Итак, если моя строка - "чувак - классный чувак".
Я бы хотел найти первый индекс "чувак":
mystring.findfirstindex('dude') # should return 4
Что такое команда python для этого?
Спасибо.
>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
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, Тоби Дональдсон
реализовать это алгоритмическим способом, не используя встроенную функцию 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