Відповіді:
Ви можете використовувати посилання 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.