Я хочу найти позицию (или индекс) последнего вхождения определенной подстроки в заданной входной строке str
.
Например, предположим, что входной строкой является str = 'hello'
подстрока target = 'l'
, а затем она должна вывести 3.
Как я могу это сделать?
str
в качестве имени переменной. Другое имя переменной, которого люди должны избегать в python, этоabc
;abc
в нативном API есть модульВы можете использовать
rfind()
или ссылки Python2:rindex()
rfind()
rindex()
Разница в том, что когда подстрока не найдена,
rfind()
возвращается, в-1
то времяrindex()
какValueError
выдает исключение (ссылка Python2:)ValueError
.Если вы не хотите проверять
rfind()
код возврата-1
, вы можете предпочестьrindex()
понятное сообщение об ошибке. В противном случае вы можете искать минуты, когда неожиданное значение-1
приходит из вашего кода ...Пример: поиск последнего символа новой строки
источник
Используйте
str.rindex
метод.источник
Попробуй это:
источник
В
more_itertools
библиотеке также предлагает инструменты для нахождения индексов всех символов или всех подстрок .Дано
Код
Персонажи
Теперь
rlocate
доступен инструмент:Дополнительный инструмент
locate
:Подстроки
Существует также
window_size
параметр, позволяющий найти ведущий элемент из нескольких элементов:источник
Не пытается воскресить неактивное сообщение, но так как оно еще не было опубликовано ...
(Вот как я это сделал, прежде чем нашел этот вопрос)
Объяснение: Когда вы ищете последнее вхождение, на самом деле вы ищете первое вхождение в обратной строке. Зная это, я сделал
s[::-1]
(что возвращает перевернутую строку), а затем проиндексировалtarget
оттуда. Тогда я сделал,len(s) - 1 - the index found
потому что мы хотим, чтобы индекс в необратимой (то есть оригинальной) строке.Берегись, хотя! Если
target
это более одного символа, вы, вероятно, не найдете его в обратной строке. Чтобы исправить это, используйтеlast_pos = len(s) - 1 - s[::-1].index(target[::-1])
, который ищет обратную версиюtarget
.источник
Если вы не хотите использовать rfind, то это поможет
источник
Вы можете использовать
rindex()
функцию, чтобы получить последнее вхождение символа в строкеисточник
Метод Python String rindex ()
Описание
Метод строки Python rindex () возвращает последний индекс, в котором найдена подстрока str, или вызывает исключение, если такого индекса нет, опционально ограничивая поиск строкой [beg: end].
Синтаксис
Следующий синтаксис для метода rindex () -
Параметры
str - указывает строку для поиска.
beg - это начальный индекс, по умолчанию его 0
len - это конечный индекс, по умолчанию он равен длине строки.
Возвращаемое значение
Этот метод возвращает последний индекс, если он найден, в противном случае возникает исключение, если str не найден.
Пример
В следующем примере показано использование метода rindex ().
Live Demo
! / USR / бен / питон
Когда мы запускаем вышеуказанную программу, она выдает следующий результат -
Ссылка: Python String Метод rindex () - Учебное пособие
источник