Как работает метод rfind()
Мне нужно найти второе вхождение буквы f. Но вместо 1 программа выводит 15. Почему?
s = ffffffffffffffff
f = s.rfind('f')
print(f)
Ответы (2 шт):
Метод str.rfind() начинает поиск с конца. Соответственно, метод возвращает первый найденный индекс начиная справа.
потому что
str.find - Возвращает наименьший индекс, по которому обнаруживается начало указанной подстроки в исходной.
str.rfind - Возвращает наибольший индекс, по которому обнаруживается начало указанной подстроки в исходной.
т.е. возвращается индекс от начала строки
s = 'ffffffffffffffff'
f = s.rfind('f')
соответственно ищет наибольший индекс (позицию) в которой встречается строка f, а это и есть 15
т.е. данный метод НЕ СЧИТАЕТ индекс (позицию) ОТ КОНЦА строки, он СЧИТАЕТ ОТ НАЧАЛА
P.S.
Если же вам надо найти второе вхождение буквы f, то надо сделать последовательный поиск от начала
s = 'ffffffffffffffff'
# находим позицию первого символа 'f'
pos = s.find('f')
# находим позицию первого символа `f` после позиции первого символа
pos = s.find('f', pos + 1)
print(pos)