Как найти последний символ строки питон

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

Например, в строке “stand firm in the faith” всего 23 символа.

testString = "stand firm in the faith"
print("The length of testString is: %d" % len(testString))

# Вывод:
# The length of testString is: 23

При этом последняя буква “h” имеет индекс 22. Почему 22, а не 23? Потому что в Python индексация начинается с 0. Т.е. первый символ в строке имеет индекс 0, второй – 1 и так далее.

Еще Python имеет замечательную особенность: индексация может идти и в обратном порядке! Просто используйте отрицательные числа, начиная с -1. Под индексом -1 будет последний символ строки, под индексом -2 – предпоследний и т.д.

Схема индексации на примере строки stand firm in the faith

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

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

testString = "stand firm in the faith"
lastChar = testString[22]
print("The last character of testString is: %s" % lastChar)

# Вывод:
# The last character of testString is: h

Применение функции len()

Более детерминированный способ получения последнего индекса в строке – это использование функции len() для получения длины строки. В данном случае функция len() вернет 23. Чтобы получить индекс последнего символа, нужно вычесть единицу из длины строки.

testString = "stand firm in the faith"
lastChar = testString[len(testString) - 1]
print("The last character of testString is: %s" % lastChar)

# Вывод:
# The last character of testString is: h

Отрицательный индекс

Вероятно, самый простой способ получить последний символ строки в Python – это использовать отрицательные индексы. Использование отрицательных чисел для индексации в Python позволяет начать отсчет с конца строки. Таким образом, если в строке “stand firm in the faith” вам нужен только последний символ строки, можно обратиться к нему по индексу -1.

testString = "stand firm in the faith"
lastChar = testString[-1]
print("The last character of testString is: %s" % lastChar)

# Вывод:
# The last character of testString is: h

Осторожность при работе с пустой строкой

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

sampleString = ""
lastChar = sampleString[-1]

Результат:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range

Простой способ исправить этот пример – проверить, что наша строка имеет ненулевую длину (т.е. содержит какие-то символы).

testString = ""
if len(testString) > 0:
    lastChar = testString[len(testString) - 1]
    print("The last character of testString is: %s" % lastChar)
else:
    print("The string was empty")

# Вывод:
# The string was empty

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

Получаем последние n символов строки

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

При помощи среза можно задать диапазон символов. Для этого указываются индексы начала и конца диапазона символов (их разделяет двоеточие). Важно обратить внимание, что символ под начальным индексом войдет в срез, а под конечным – нет. Если при использовании среза вы получаете слишком много или слишком мало символов, то это, скорее всего, связано с непониманием того, как он используется.

testString = "stand firm in the faith"
extractedString = testString[6:10]
print("Extracted string: %s" % extractedString)

# Вывод:
# Extracted string: firm

Примечание редакции: о срезах можно почитать в статье “Срез массива в Python”. Срезы строк работают аналогично.

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

Чтобы получить последние n символов, просто выберите начальный и конечный индекс для среза. Например, если мы хотим получить последнее слово нашей тестовой строки “stand firm in the faith”, мы используем начальный индекс 18. Конечный индекс можно не указывать. В таком случае по умолчанию срез будет до конца строки.

testString = "stand firm in the faith"
lastChars = testString[18:]
print("The last five character of testString is: %s" % lastChars)

# Вывод:
# The last five character of testString is: faith

Можно пойти другим путем и применить функцию len(). Для определения начального индекса среза из длины строки нужно будет вычесть 6. Мы вычитаем единицу, потому что индексация начинается с нуля, и еще 5 – потому что в последнем слове 5 символов.

testString = "stand firm in the faith"
lastChars = testString[len(testString)-6:]
print("The last five character of testString is: %s" % lastChars)

# Вывод:
# The last five character of testString is:  faith

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

Этот вариант немного странный, но это может быть именно то, что вы ищете. Вы можете использовать отрицательную индексацию, чтобы указать начальный индекс, а затем не указывать конечный индекс, чтобы захватить остальную часть строки.

testString = "stand firm in the faith"
lastChars = testString[-5:]
print("The last five character of testString is: %s" % lastChars)

# Вывод:
# The last five character of testString is: faith

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

Если вы имеете дело с предложениями и пытаетесь получить последнее слово в строке, лучше всего проделать некоторые манипуляции со строками.

Разделите исходную строку на массив новых строк с помощью функции split(). Первый аргумент функции split() указывает конкретный символ, по которому нужно разделить данную строку. Это может быть любой из символов Юникода, даже специальные символы. В нашем случае мы хотим разделить строку по пробелам. После разделения нам останется только выбрать одну из перечисленных выше техник для захвата последнего слова. Для примера используем отрицательный индекс.

testString = "stand firm in the faith"
words = testString.split(" ")
print("The last word of testString is: %s" % words[-1])

# Вывод:
# The last word of testString is: faith

Примечание редакции: о применении функции split() можно почитать в статье “Разделение строки в Python”.

Осторожно при работе с пустой строкой

Это менее рискованно, чем обращение к последнему элементу строки по индексу, поскольку функция split(), вызванная для пустой строки, вернет массив с содержимым [”], и исключение не будет выброшено. Тем не менее, хорошей практикой является добавление обработки ошибок, чтобы в дальнейшем в программе не возникало неожиданного поведения.

sampleString = ""
testString = ""
words = testString.split(' ')
print(words) 
print("The last word of testString is: %s" % words[-1])

# Вывод:
# ['']
# The last word of testString is: 

Ошибки нет, но это, вероятно, не тот результат, которого ожидает наш код. Исправление аналогично предыдущему примеру проверки ошибок:

testString = ""
if testString.count(" ") > 0:
    words = testString.split(' ')
    print("The last word of testString is: %s" % words[-1])
else:
    print("There was not multiple words in the string")

# Вывод:
# There was not multiple words in the string

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

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

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

testString = "this string has white space on the end  "
print("[%s]" % testString)

# Вывод:
# [this string has white space on the end  ]
testString = "this string has white space on the end  "
testString = testString.strip()
print("[%s]" % testString)

# Вывод:
# [this string has white space on the end]

Как видите, метод strip() удалил пробелы из конца строки. Поэтому, если вы пытались получить последний символ, чтобы проверить, нужно ли удалять пробелы, метод strip() – гораздо более простой способ достижения той же цели.

Перевод статьи «Python: How to get the last character in a string».

Подскажите, пожалуйста, как узнать последний символ определенной строки списка.
Например, дан список list = ["aaab","aade","abez"]
Как вывести последний символ элемента list[0], чтобы получилось b

То есть мне нужна конструкция по аналогии с Java list[0].charAt(list[0].length()-1)

задан 22 окт 2019 в 20:06

LeFroys's user avatar

3

Самый простой и красивый способ — обращение по отрицательному индексу, который помогает получать элементы в обратном порядке:

  • -1 — последний элемент
  • -2 — предпоследний элемент

Пример:

items = ["aaab", "aade", "abez"]
print(items[0][-1])
# b

print(items[0][len(items[0]) - 1])
# b

for x in items:
    print(x, x[-1], x[-2], x[-3], x[-4], sep=' | ')

# aaab | b | a | a | a
# aade | e | d | a | a
# abez | z | e | b | a

ответ дан 25 окт 2019 в 21:57

gil9red's user avatar

gil9redgil9red

76.3k6 золотых знаков51 серебряный знак117 бронзовых знаков

4

stroke = ['asd','','']
print([i for i in stroke[0][::-1]][0])

ответ дан 22 окт 2019 в 20:51

finally's user avatar

finallyfinally

2,37610 серебряных знаков29 бронзовых знаков

как вывести последний символ в строке питон

Влад Карпов



Ученик

(147),
на голосовании



4 года назад

скажите пожалуйста пропустил урок

Голосование за лучший ответ

Aleks Nots

Просветленный

(21694)


4 года назад

a = ‘asdf’
print(a[-1])

Вывод
>>> %Run Py3.py
f
>>>

Влад КарповУченик (147)

4 года назад

спасибо большое

Aleks Nots
Просветленный
(21694)
Это не только для строк, а вообще для любых последовательностей, минусовый индекс -1 – это последний элемент.
Цитата из Лутца

В языке Python предусмотрена возможность индексации в обратном порядке,
от конца к началу – положительные индексы откладываются от левого конца
последовательности, а отрицательные – от правого:
>>> S[-1] # Последний элемент в конце S
‘m’
>>> S[-2] # Второй элемент с конца
‘a’
Формально отрицательные индексы просто складываются с длиной строки,
поэтому следующие две операции эквивалентны (хотя первая форма записи
выглядит проще и понятнее):
>>> S[-1] # Последний элемент в S
‘m’
>>> S[len(S)-1] # Отрицательная индексация, более сложный способ
‘m’
Примечательно, что внутри квадратных скобок допускается использовать …

Юрий Попов

Мудрец

(18887)


4 года назад

Иди на Stepik, там есть курсы без дедлайна, которые можно проходить бесплатно и в любом порядке. Можно посмотреть вывод строк на Pythonworld. И даже просто поискать в Google.

Asked
1 year, 7 months ago

Viewed
13k times

How can I get the last character of this string?

seed_name = "Cocoa"

mkrieger1's user avatar

mkrieger1

18.2k4 gold badges53 silver badges64 bronze badges

asked Sep 30, 2021 at 22:39

gabriel-pimentel's user avatar

6

As shown in the official Python tutorial,

>>> word = 'Python'

[…]

Indices may also be negative numbers, to start counting from the right:

>>> word[-1]  # last character
'n'

Всё о строках в Python

Содержание

  • Создание строк в Python
  • Конкатенация строк в Python
  • Методы строк в Python
  • Форматирование строк в Python
  • Индексы и срезы строк в Python

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

Создание строк в Python

Строки в Python принадлежат к типу данных str/string и служат для хранения текстовых данных.

Для того, чтобы создать объект строки нам нужно нашу фразу, любой текст или символы обернуть в одинарные, двойные или тройные кавычки:

Всё о строках в Python

Сами кавычки являются строковым литералом, которые создают в памяти объект типа string.

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

Например если мы попробуем вначале строки поставить одинарную кавычку, а в конце двойную, то получим ошибку:

Всё о строках в Python

Внутри строк мы также можем использовать кавычки и для этого есть несколько способов.

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

Всё о строках в Python

Второй способ, это экранировать кавычки с помощью обратного слэша:

Всё о строках в Python

Тройные одинарные или двойные кавычки обычно используются для документации в коде, так как имеют интересные свойства. Строки заключённые в них поддерживают многострочность и не требуют использования специального символа n для переноса строки. Внутри тройных кавычек мы так же можем вставлять двойные или одинарные кавычки:

Всё о строках в Python

Строки как и числа в Python являются неизменяемыми объектами. Мы можем убедиться в этом создав две переменные с одинаковым именем и распечатать их id, и как видим они будут разными:

Всё о строках в Python

Конкатенация строк в Python

Давайте поговорим о конкатенации строк и говоря простыми словами это соединение одной строки с другой.

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

Всё о строках в Python

В операциях со строками функционал этого операнда отличается от работы с числами.

Синтаксис весьма прост мы берём две, три, пять сколько угодно строк и складываем их между собой использую операнд сложения:

Всё о строках в Python

В Python мы так же можем использовать операнд умножения “*” при работе со строками. Операнд умножения дублирует нашу строку умножая её на переданное значение:

Всё о строках в Python

Важным свойством строк является их длина. Длину строки мы можем узнать с помощью встроенной функции len() сокращение от слова length, что в переводе с английского означает – длина.

Всё о строках в Python

Обратите внимание, что если передать пустую строку и вывести её длину, мы получим 0 т.е boolean значение False, а если хотя бы поставим пробел, то получим 1 эквивалентную значению True.

Всё о строках в Python

Если вы пока не знакомы с типом данных boolean, не переживайте, позже мы его рассмотрим.

Методы строк в Python

Мы уже использовали ранее некоторые так называемые независимые функции такие как print(), type() и id().

Всё о строках в Python

И конечно у строк есть свои методы. В чём их отличие от функций. Методы это теже самые функции которые принадлежат конкретному классу и являются его атрибутом. В данном уроке мы работаем с классом str, классом строк в Python.

Для того, чтобы увидеть список доступных методов для строк, давайте воспользуемся функцией dir() и выведем их через цикл в столбик:

Всё о строках в Python

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

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

Чтобы вызвать метод у конкретного объекта класса, мы сначала обращаемся к объекту my_obj, затем ставим точку my_obj. и далее пишем нужный нам метод в конце указывая круглые скобки my_obj.method_name() тем самым вызывая его.

Есть как простые методы например  upper() и lower() которые приводят строку к разным регистрам, или title() который возвращает первую заглавную букву:

Всё о строках в Python

Откровенно говоря, я вот прям не вспомню когда последний раз использовал их в работе, это к вопросу о надобности и зазубревании.

И конечно есть методы более интересные, которые я использую регулярно. Например метод replace(), который принимает первым аргументом искомую подстроку, а вторым подстроку на которую нужно заменить искомую. Сам метод возвращает копию строки:

Всё о строках в Python

Кстати обратите внимание, что при использовании какого либо метода, я заново сохраняю получаемое значение в переменную. Но что будет если я этого не сделаю:

Всё о строках в Python

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

Следующим полезным методом является метод split(), который разделят строку по переданному делителю и возвращает список:

Всё о строках в Python

Например разделив нашу строку по пробелу, мы получим список из трёх объектов.

Склеить строку мы можем как с помощью операнда сложения, так и используя интересный метод join() который возвращает склеенную по разделителю строку из итерируемого объекта, в данном случае списка:

Всё о строках в Python

Перед методом указывается разделитель, и давайте например укажем дефис, а не пробел. На выходе получаем строку со словами разделёнными дефисом.

Часто требуется убрать пробелы вначале или в конце строки, для этого в Python существует метод strip(). Его так же можно использовать для обрезки ненужных нам символов, передав их в качестве аргумента. Например мы хотим убрать восклицательный знак:

Всё о строках в Python

У него есть несколько похожих методов таких как lstrip() что означает обрезать слева и rstrip() соответственно обрезать справа:

Всё о строках в Python

Форматирование строк в Python

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

Всё о строках в Python

Вы можете встретить несколько типов форматирования строки, первый и лично мой самым любимый это так называемый метод f-строк доступный нам с версии Python 3.6 и который имеет следующий синтаксис:

Всё о строках в Python

Например у нас есть переменная name со значением “Андрей” и строка my_string = со значением “Привет !”, для того, чтобы подставить в нашу строку переменную name, мы вначале строки указываем букву f, а внутрь строки передаём в фигурных скобках переменную name. Таким образом мы можем передавать сколько угодно значений в строку, подставляя в нужные места переменные:

Всё о строках в Python

Следующий способ форматирования строк, через строковый метод format(). Мы не указываем вначале букву f, а передаём значения в виде аргументов в сам метод:

Всё о строках в Python

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

Всё о строках в Python

Так name у нас имеет индекс равный 0 и по дефолту идёт первым, мы например можем поменять местами индексы восклицательного знака и name, как результат при выводе в строке их значения так же поменяются местами.

Либо можем передать значения присваивая их через именованные аргументы:

Всё о строках в Python

И последний, весьма старый способ который вы можете встретить в своей практике это форматирование через оператор процента:

Всё о строках в Python

Данный метод форматирования постепенно исчезает из кода, но тем неменее встречается в книгах и старых проектах.

Индексы и срезы строк в Python

Строки в Python являются неизменяемыми и упорядоченными итерируемыми объектами. Это означает, что каждому символу в строке присвоен свой номер или так называемый индекс.

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

Всё о строках в Python

Например у нас есть переменная my_string со значением “Python is awesome”, при обращении к переменной my_string мы получаем строку целиком:

Всё о строках в Python

Каждый символ нашей строки имеет свой индекс, начиная с 0. Так у P будет индекс равный 0, у Y равный 1 и так далее.

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

Всё о строках в Python

Окей, обратите внимание, что нет ничего сложного получить первый символ в строке, он всегда будет под индексом 0. Но как нам быть если нужно забрать последний символ.

Мы можем воспользоваться уже знакомой нам функцией len() и напечатать длину нашей строки равную 17.

Всё о строках в Python

Давайте попробуем вывести последний символ, передав индекс 17.

Всё о строках в Python

И мы получаем ошибку, говорящую нам о том, что данного индекса не существует. Но как же так, давайте разберёмся.

Функция len() начинает свой отсчёт с 1, именно поэтому показывает длину равную 17. Но помните что индексирование строк начинается с 0, т.е на единицу меньше чем начало отсчёта функции len().

Для того, чтобы обратиться к последнему символу во многих языках в том числе и в Python мы можем использовать конструкцию my_string[len(my_string) – 1]:

Всё о строках в Python

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

Нумерация отрицальтельных индексов начинается с правого края и минус единицы. Т.е буква “e” имеет индекс -1, “m” -2, “o” -3 и так далее справа налево:

Всё о строках в Python

Конечно же мы можем сразу получать несколько символов из строки, делается это с помощью так называемого среза. Это очень крутая и полезная штука, например в парсинге данных, когда мы конкретно можем задать с какого по какой индекс нужно забрать явки, пароли и другие важные данные из строки.

Рассматривайте срез как будто вы отрезаете кусок от торта, вот допустим вам нужен кусочек с ягодой, и мы можем вырезать его как с краю, так и из середины.

Вернёмся к нашей строке. Например нам нужно вырезать слово Python. Мы как и прежде обращаемся к строке, затем ставим квадратные скобки, указываем начальный индекс равный 0, т.е с какой буквы нам нужно отрезать и через двоеточие указываем индекс буквы по которую нужно получить срез, буква “n” имеет индекс равный 5.

Всё о строках в Python

Но как видим срез то мы получили, только с небольшой проблемой. Буква “n” в него не попала.

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

Всё о строках в Python

Давайте ещё раз попробуем получить срез, на этот раз возьмём слово “is”, “i” у нас имеет индекс равный 7, а “s” под 8, получается нам нужно указать срез с 7 по 8 индекс, но не забываем прибавить единицу и получается с 7 по 9.

Всё о строках в Python

Хорошо.

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

Всё о строках в Python

Указав индекс только с одной стороны, мы получим все значения с указанного интервала который если не указывать по умолчанию равен 0 и по указанный интервал:

Всё о строках в Python

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

Шаг можно указать через двоеточие. Давайте создадим строку с цифрами для большей наглядности. И например укажем шаг равный 2 для всей нашей строки, в результате мы получим только нечётные числа:

Всё о строках в Python

Т.е получаем единицу, прибавляем к ней шаг равный 2 получаем 3, далее прибавляем шаг равный 2 и получаем 5, 7 и так далее.

Если мы не укажем интервал и поставим шаг равный -1 то получим перевернутую строку:

Всё о строках в Python

На сегодня пожалуй всё, мы рассмотрели очень важную, большую и в тоже время простую тему.

У нас будет с вами много практики и не переживайте если вы что-то не уловили. Enjoy!

На Youtube канале PYTHONTODAY ты найдёшь видеоуроки:

  • – по созданию ботов
  • – парсингу сайтов
  • – приложений на смартфон
  • – машинному обучению и big data с нуля

Освой сетевую безопасность, и задавай вопросы в клубе.

Вступай в клуб Python разработчиков!

Читайте так-же:

Функции преобразования типов данных в Python

Числа в Python

Настраиваем свой VPN

Установка VirtualBox в Ubuntu

Установка Python на Windows

Как подключить PostgreSQL к Django

Спасибо, что дочитали до конца. Вы меня очень поддержите, если поставите “Лайк”, оставите комментарий или ПОДПИШИТЕСЬ на мой канал 🙂

Добавить комментарий