Последнее значение в строке python

Find index of last occurrence of a substring in a string

I want to find the position (or index) of the last occurrence of a certain substring in given input string str . For example, suppose the input string is str = ‘hello’ and the substring is target = ‘l’ , then it should output 3. How can I do this?

12 Answers 12

Also don’t use str as variable name or you’ll shadow the built-in str() .

>>> 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 "", line 1, in ValueError: substring not found 

The difference is when the substring is not found, rfind() returns -1 while rindex() raises an exception ValueError (Python2 link: ValueError ).

If you do not want to check the rfind() return code -1 , you may prefer rindex() that will provide an understandable error message. Else you may search for minutes where the unexpected value -1 is coming from within your code.

Example: Search of last newline character

>>> txt = '''first line . second line . third line''' >>> txt.rfind('\n') 22 >>> txt.rindex('\n') 22 

Hi @JacobSchneider. I have added an example according to your comment. I do not understand your issue. Please provide more information: Python version, Content of your string. Cheers

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

Not trying to resurrect an inactive post, but since this hasn’t been posted yet.

Читайте также:  Python web command line

(This is how I did it before finding this question)

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

Explanation: When you’re searching for the last occurrence, really you’re searching for the first occurrence in the reversed string. Knowing this, I did s[::-1] (which returns a reversed string), and then indexed the target from there. Then I did len(s) — 1 — the index found because we want the index in the unreversed (i.e. original) string.

Watch out, though! If target is more than one character, you probably won’t find it in the reversed string. To fix this, use last_pos = len(s) — 1 — s[::-1].index(target[::-1]) , which searches for a reversed version of target .

Источник

Как получить последние символы строки в Python

В этой статье мы разберем, как получить последние символы строки при помощи Python. Под последними символами следует понимать как один, так и любое заданное число символов.

В Python строка – это последовательность символов, и каждый символ в ней имеет связанный с ним индексный номер. Например, у нас есть строковая переменная sample_str , которая содержит строку:

sample_str = "Sample String"

Каждый символ в этой строке имеет порядковый номер, а начинается нумерация (индексация) с 0. То есть:

  • ‘S’ имеет индекс 0
  • ‘a’ имеет индекс 1
  • ‘m’ имеет индекс 2
  • ‘p’ имеет индекс 3
  • ‘l’ имеет индекс 4
  • ‘e’ имеет индекс 5
  • ‘ ‘ имеет индекс 6
  • ‘S’ имеет индекс 7
  • ‘t’ имеет индекс 8
  • ‘r’ имеет индекс 9
  • ‘i’ имеет индекс 10
  • ‘n’ имеет индекс 11
  • ‘g’ имеет индекс 12

String в Python предоставляет оператор [] для доступа к любому символу в строке по индексу. Нам нужно передать позицию индекса в квадратных скобках, и оператор вернет символ с этим индексом. Например, sample_str[i] вернет символ в i-й позиции.

Примечание редакции: о том, как найти сам индекс, читайте в статье “Как найти индекс символа в строке в Python”.

Но здесь ситуация немного сложнее: мы хотим получить доступ к элементам, начиная с последнего в строке. Для этого есть разные способы, давайте рассмотрим их по очереди.

Получение последнего символа строки при помощи отрицательной индексации

Помимо положительных индексов, мы можем передавать в оператор [] и отрицательные. Каждый символ в строке имеет отрицательный индекс, связанный с ним. Последний символ строки имеет индекс -1, предпоследний – -2 и так далее.

Таким образом, если наша строка – ‘Sample String’, то отрицательная индексация в ней будет выглядеть следующим образом:

  • ‘S’ имеет индекс -13
  • ‘a’ имеет индекс -12
  • ‘m’ имеет индекс -11
  • ‘p’ имеет индекс -10
  • ‘l’ имеет индекс -9
  • ‘e’ имеет индекс -8
  • ‘ ‘ имеет индекс -7
  • ‘S’ имеет индекс -6
  • ‘t’ имеет индекс -5
  • ‘r’ имеет индекс -4
  • ‘i’ имеет индекс -3
  • ‘n’ имеет индекс -2
  • ‘g’ имеет индекс -1

Последний символ строки имеет индексную позицию -1. Поэтому, чтобы получить последний символ из строки, передайте -1 в квадратных скобках. Пример:

sample_str = "Sample String" # Получить последний символ строки, т.е. символ с индексом -1 last_char = sample_str[-1] print('Last character: ', last_char) # Вывод: # Last character: g

Получение последнего символа строки с помощью функции len()

Предположим, мы не хотим использовать отрицательную индексацию. Тогда для доступа к последнему символу строки можно сначала вычислить длину строки, а затем вычесть из нее единицу – это и будет индекс последнего символа.

sample_str = "Sample String" # Получить длину строки length = len(sample_str) # Получить последний символ, т.е. символ с индексом length - 1 last_char = sample_str[length - 1] print('Last character: ', last_char) # Вывод: # Last character: g

Мы получили последний символ, но это решение немного сложнее предыдущего.

До сих пор мы извлекали один символ, но что, если нам нужно больше? Например, если мы хотим получить последние 2, 3, 4 и т.д. символов строки. По сути, нам нужен доступ к подстроке заданной длины из конца строки. Как это сделать?

Извлекаем несколько последних символов строки

В Python оператор [] может принимать не только отдельный индекс, но и диапазон индексов. При этом возвращается фрагмент строки, т.е. подстрока.

  • start – индекс, с которого начнется выборка символов, по умолчанию значение равно 0.
  • end – индекс, до которого будет производиться выборка символов из строки, значение по умолчанию – конец строки. Сам конечный индекс в выборку не входит.
  • step – шаг, значение по умолчанию – 1.

Чтобы получить последние N символов строки, нужно либо передать отрицательные индексы, либо использовать функцию len() для вычисления диапазона.

Получаем последние символы строки с использованием отрицательных индексов

sample_str = "Sample String" # Получить последние 3 символа last_chars = sample_str[-3:] print('Last 3 character: ', last_chars) # Вывод: # Last 3 character: ing

Мы сделали срез строки от третьего индекса с конца строки и до конца строки. Таким образом мы получили подстроку, содержащую последние три символа строки.

Получаем последние символы строки с помощью функции len()

sample_str = "Sample String" # Получить длину строки length = len(sample_str) # Получить 3 последних символа last_chars = sample_str[length - 3 :] print('Last 3 character: ', last_chars) # Вывод: # Last 3 character: ing

Сначала мы вычислили длину строки, а затем сделали срез от индексной позиции length — 4 до конца строки. Так мы получили подстроку, содержащую последние три символа исходной строки.

Источник

Строки. Функции и методы строк

Python 3 логотип

Итак, о работе со строками мы немного поговорили, теперь поговорим о функциях и методах строк.

Я постарался собрать здесь все строковые методы и функции, но если я что-то забыл — поправляйте.

Базовые операции

При вызове методов необходимо помнить, что строки в Python относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку.

  :  Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.

Таблица «Функции и методы строк»

Функция или метод Назначение
S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» Литералы строк
S = «s\np\ta\nbbb» Экранированные последовательности
S = r»C:\temp\new» Неформатированные строки (подавляют экранирование)
S = b»byte» Строка байтов
S1 + S2 Конкатенация (сложение строк)
S1 * 3 Повторение строки
S[i] Обращение по индексу
S[i:j:step] Извлечение среза
len(S) Длина строки
S.find(str, [start],[end]) Поиск подстроки в строке. Возвращает номер первого вхождения или -1
S.rfind(str, [start],[end]) Поиск подстроки в строке. Возвращает номер последнего вхождения или -1
S.index(str, [start],[end]) Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError
S.rindex(str, [start],[end]) Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError
S.replace(шаблон, замена[, maxcount]) Замена шаблона на замену. maxcount ограничивает количество замен
S.split(символ) Разбиение строки по разделителю
S.isdigit() Состоит ли строка из цифр
S.isalpha() Состоит ли строка из букв
S.isalnum() Состоит ли строка из цифр или букв
S.islower() Состоит ли строка из символов в нижнем регистре
S.isupper() Состоит ли строка из символов в верхнем регистре
S.isspace() Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’))
S.istitle() Начинаются ли слова в строке с заглавной буквы
S.upper() Преобразование строки к верхнему регистру
S.lower() Преобразование строки к нижнему регистру
S.startswith(str) Начинается ли строка S с шаблона str
S.endswith(str) Заканчивается ли строка S шаблоном str
S.join(список) Сборка строки из списка с разделителем S
ord(символ) Символ в его код ASCII
chr(число) Код ASCII в символ
S.capitalize() Переводит первый символ строки в верхний регистр, а все остальные в нижний
S.center(width, [fill]) Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию)
S.count(str, [start],[end]) Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию)
S.expandtabs([tabsize]) Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам
S.lstrip([chars]) Удаление пробельных символов в начале строки
S.rstrip([chars]) Удаление пробельных символов в конце строки
S.strip([chars]) Удаление пробельных символов в начале и в конце строки
S.partition(шаблон) Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки
S.rpartition(sep) Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку
S.swapcase() Переводит символы нижнего регистра в верхний, а верхнего – в нижний
S.title() Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний
S.zfill(width) Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями
S.ljust(width, fillchar=» «) Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar
S.rjust(width, fillchar=» «) Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar
S.format(*args, **kwargs) Форматирование строки

Для вставки кода на Python в комментарий заключайте его в теги

Источник

Оцените статью