5

Найти индекс последнего вхождения подстроки в строке

27

Я хочу найти позицию (или индекс) последнего вхождения определенной подстроки в заданной строке str.

Например, предполагая, что входная строка равна str = 'hello', а подстрока target = 'l', то в результате должно возвращаться значение 3.

Как я могу это сделать?

5 ответ(ов)

0

Метод str.rindex используется для поиска последнего вхождения подстроки в строке. В отличие от str.index, который возвращает индекс первого вхождения, rindex возвращает индекс последнего вхождения подстроки.

Пример использования:

>>> 'hello'.rindex('l')
3

В этом примере rindex найден индекс последнего 'l', который находится на позиции 3 (индексация начинается с 0).

Для сравнения, можно использовать метод str.index, который возвращает индекс первого вхождения подстроки:

>>> 'hello'.index('l')
2

Здесь index возвращает индекс первого 'l', находящегося на позиции 2.

Учтите, что если подстрока не найдена, rindex вызовет исключение ValueError, поэтому обратите на это внимание при использовании этого метода.

0

Не пытаюсь воскресить неактивный пост, но так как это еще не было опубликовано...

Вот как я это сделал до того, как нашел этот вопрос:

s = "hello"
target = "l"
last_pos = len(s) - 1 - s[::-1].index(target)

Объяснение: Когда вы ищете последнее вхождение, на самом деле вы ищете первое вхождение в перевернутой строке. Зная это, я использовал s[::-1] (которая возвращает перевернутую строку), а затем нашел индекс target в ней. После этого я вычислил len(s) - 1 - найденный индекс, поскольку нам нужен индекс в оригинальной строке.

Однако будьте осторожны! Если target состоит более чем из одного символа, вы, вероятно, не найдете его в перевернутой строке. Чтобы исправить это, используйте last_pos = len(s) - 1 - s[::-1].index(target[::-1]), который ищет перевернутую версию target.

0

Попробуйте следующий код:

s = 'hello plombier pantin'
print(s.find('p'))   # Вывод: 6
print(s.index('p'))  # Вывод: 6
print(s.rindex('p')) # Вывод: 15
print(s.rfind('p'))  # Вывод: 15

Объяснение:

  • s.find('p') возвращает первый индекс, где встречается 'p' (в данном случае 6).
  • s.index('p') также возвращает первый индекс 'p', но вызывает исключение, если символ не найден.
  • s.rindex('p') возвращает последний индекс 'p' и также вызывает исключение, если символ не найден.
  • s.rfind('p') возвращает последний индекс 'p', возвращая -1, если символ не найден.

Таким образом, find() и rfind() безопасны для использования, если вы не уверены, что символ присутствует в строке.

0

В этом случае можно использовать как метод rfind(), так и метод rindex() для строк. Оба метода вернут максимальный индекс подстроки в строке, как показано ниже:

test_string = 'hello'
target = 'l'
print(test_string.rfind(target))  # Вывод: 3
print(test_string.rindex(target))  # Вывод: 3

Однако стоит помнить, что метод rindex() вызывает исключение ValueError (с сообщением "подстрока не найдена"), если целевое значение не найдено в строке. В то время как метод rfind() просто вернет -1 в таком случае.

0

Перевод вашего кода на русский язык в стиле ответа на StackOverflow будет выглядеть следующим образом:

# Последнее вхождение символа в строке без использования встроенных функций
str = input("Введите строку: ")
char = input("Введите символ для поиска в строке: ")
flag = -1  # Используем -1, чтобы легче было проверить, найден ли символ
for i in range(len(str)):
    if str[i] == char:
        flag = i  # Обновляем индекс, если символ найден
if flag == -1:
    print("Введённый символ '", char, "' не найден в строке.")
else:
    print("Символ '", char, "' последний раз встречается на индексе: ", flag)

В этом коде мы проходим по каждому символу в строке и сохраняем последний индекс, где встречается искомый символ. Если символ не найден, программа сообщает об этом. В этом случае использован флаг со значением -1 для более удобной проверки, найден ли символ.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь