Відповіді:
Ви можете використовувати посилання Python2rfind() або :rindex()
rfind() rindex()
>>> s = 'Hello StackOverflow Hi everybody'
>>> print( s.rfind('H') )
20
>>> print( s.rindex('H') )
20
>>> print( s.rfind('other') )
-1
>>> print( s.rindex('other') )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
Різниця полягає в тому, що підрядка не знайдена, rfind()повертається -1при rindex()підвищенні винятку ValueError(Python2 посилання:) ValueError.
Якщо ви не хочете перевіряти rfind()код повернення -1, ви, можливо rindex(), надасте зрозуміле повідомлення про помилку. В іншому випадку ви можете шукати хвилин, коли -1з вашого коду надходить несподіване значення ...
>>> txt = '''first line
... second line
... third line'''
>>> txt.rfind('\n')
22
>>> txt.rindex('\n')
22
У more_itertoolsбібліотеці також пропонує інструменти для знаходження індексів усіх символів або всіх подстрок .
Дано
import more_itertools as mit
s = "hello"
pred = lambda x: x == "l"
Код
Персонажі
Тепер rlocateдоступний інструмент:
next(mit.rlocate(s, pred))
# 3
Додатковим інструментом є locate:
list(mit.locate(s, pred))[-1]
# 3
mit.last(mit.locate(s, pred))
# 3
Підрядки
Також window_sizeдоступний параметр для розташування провідного елемента з декількох елементів:
s = "How much wood would a woodchuck chuck if a woodchuck could chuck wood?"
substring = "chuck"
pred = lambda *args: args == tuple(substring)
next(mit.rlocate(s, pred=pred, window_size=len(substring)))
# 59
Не намагається воскресити неактивну публікацію, але оскільки вона ще не була опублікована ...
(Ось як я це зробив, перш ніж знайти це питання)
s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)
Пояснення: Коли ви шукаєте останнє явище, ви дійсно шукаєте перше явище у зворотному рядку. Знаючи це, я зробив s[::-1](який повертає зворотний рядок), а потім індексував targetзвідти. Тоді я це зробив, len(s) - 1 - the index foundтому що ми хочемо, щоб індекс був у неперевершеному (тобто оригінальному) рядку.
Будьте уважні, хоча! Якщо targetсимволів більше одного, ви, ймовірно, не знайдете його у зворотному рядку. Щоб виправити це, використовуйте last_pos = len(s) - 1 - s[::-1].index(target[::-1]), який шукає зворотну версію target.
ви можете використовувати rindex()функцію для отримання останнього появи символу в рядку
s="hellloooloo"
b='l'
print(s.rindex(b))
Метод rindex () струнного пітона ()
Опис
рядового методу Python rindex () повертає останній індекс, де знайдено підрядку str, або збільшує виняток, якщо такого індексу немає, додатково обмежуючи пошук до рядка [beg: end].
Наступний синтаксис - це синтаксис методу rindex () -
str.rindex(str, beg=0 end=len(string))
Параметри
str - Цей параметр визначає рядок, який потрібно шукати.
beg - це початковий індекс, за замовчуванням його 0
len - це закінчення індексу, за замовчуванням його дорівнює довжині рядка.
Повернене значення
Цей метод повертає останній індекс, якщо знайдено інакше, викликає виняток, якщо str не знайдено.
Приклад
У наступному прикладі показано використання методу rindex ().
Демонстраційна демонстрація
str1 = "this is string example....wow!!!";
str2 = "is";
print str1.rindex(str2)
print str1.index(str2)
Коли ми працюємо над програмою, вона дає такий результат -
5
2
Посилання: Метод rindex () Python String -) - Підручник
strяк ім’я змінної. Ще одна назва змінної, якої люди повинні уникати в python, цеabc; є модуль, який викликаєтьсяabcв рідному API.