В этой статье мы разберем, как получить последние символы строки при помощи Python. Под последними символами следует понимать как один, так и любое заданное число символов.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
В 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 оператор []
может принимать не только отдельный индекс, но и диапазон индексов. При этом возвращается фрагмент строки, т.е. подстрока.
string[start:end:step]
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: How to get Last N characters in a string?».