Python срез последний символ

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

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 "", line 1, in 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() – гораздо более простой способ достижения той же цели.

1 комментарий к “Как получить последний символ строки в Python”

Источник

Python срез последний символ

Строка считывается со стандартного ввода функцией input() . Напомним, что для двух строк определена операция сложения (конкатенации), также определена операция умножения строки на число.

Строка состоит из последовательности символов. Узнать количество символов (длину строки) можно при помощи функции len .

Любой другой объект в Питоне можно перевести к строке, которая ему соответствует. Для этого нужно вызвать функцию str() , передав ей в качестве параметра объект, переводимый в строку.

На самом деле каждая строка, с точки зрения Питона, — это объект класса str. Чтобы получить по объекту другой объект другого класса, как-то ему соответствующий, можно использовать функцию приведения. Имя этой функции совпадает с именем класса, к которому мы приводим объект. (Для знатоков: эта функция — это конструктор объектов данного класса.) Пример: int — класс для целых чисел. Перевод строки в число осуществляется функцией int() .

s = input() print(len(s)) t = input() number = int(t) u = str(number) print(s * 3) print(s + ' ' + u)

2. Срезы (slices)

Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.

Есть три формы срезов. Самая простая форма среза: взятие одного символа строки, а именно, S[i] — это срез, состоящий из одного символа, который имеет номер i . При этом считается, что нумерация начинается с числа 0. То есть если , то , , , , .

Заметим, что в Питоне нет отдельного типа для символов строки. Каждый объект, который получается в результате среза S[i] — это тоже строка типа str.

Номера символов в строке (а также в других структурах данных: списках, кортежах) называются индексом.

Если указать отрицательное значение индекса, то номер будет отсчитываться с конца, начиная с номера -1 . То есть , , , , .

Или в виде таблицы:

Строка S H e l l o
Индекс S[0] S[1] S[2] S[3] S[4]
Индекс S[-5] S[-4] S[-3] S[-2] S[-1]

Если же номер символа в срезе строки S больше либо равен len(S) , или меньше, чем -len(S) , то при обращении к этому символу строки произойдет ошибка IndexError: string index out of range .

Срез с двумя параметрами: S[a:b] возвращает подстроку из b — a символов, начиная с символа c индексом a , то есть до символа с индексом b , не включая его. Например, S[1:4] == ‘ell’ , то же самое получится если написать S[-4:-1] . Можно использовать как положительные, так и отрицательные индексы в одном срезе, например, S[1:-1] — это строка без первого и последнего символа (срез начинается с символа с индексом 1 и заканчиватеся индексом -1, не включая его).

При использовании такой формы среза ошибки IndexError никогда не возникает. Например, срез S[1:5] вернет строку ‘ello’ , таким же будет результат, если сделать второй индекс очень большим, например, S[1:100] (если в строке не более 100 символов).

Если опустить второй параметр (но поставить двоеточие), то срез берется до конца строки. Например, чтобы удалить из строки первый символ (его индекс равен 0), можно взять срез S[1:] . Аналогично если опустить первый параметр, то можно взять срез от начала строки. То есть удалить из строки последний символ можно при помощи среза S[:-1] . Срез S[:] совпадает с самой строкой S .

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

На самом деле в питоне нет и переменных. Есть лишь имена, которые связаны с какими-нибудь объектами. Можно сначала связать имя с одним объектом, а потом — с другим. Можно несколько имён связать с одним и тем же объектом.

Если задать срез с тремя параметрами S[a:b:d] , то третий параметр задает шаг, как в случае с функцией range , то есть будут взяты символы с индексами a , , и т. д. При задании значения третьего параметра, равному 2, в срез попадет кажый второй символ, а если взять значение среза, равное -1 , то символы будут идти в обратном порядке. Например, можно перевернуть строку срезом S[::-1] .

s = 'abcdefg' print(s[1]) print(s[-1]) print(s[1:3]) print(s[1:-1]) print(s[:3]) print(s[2:]) print(s[:-1]) print(s[::2]) print(s[1::2]) print(s[::-1])

Источник

Читайте также:  Join all array python
Оцените статью