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

Обложка к статье "Нахождение последнего слова в строке Python"

На чтение 2 мин Просмотров 597 Опубликовано

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

Для того чтобы вывести последнее слово в строке, необходимо:

  1. Разделить строку на слова с помощью метода split()
  2. Использовать отрицательные индексы и получить последнее слов

Разделение строки на слова

Использование функции split() — это один из наиболее простых и эффективных способов разделения строки на список слов. Функция split() позволяет разделить строку на подстроки, используя разделитель, который мы можем задать в качестве аргумента функции. Если разделитель не указан, по умолчанию используется пробел.

Вот пример использования метода split():

text = "Пример разделения строки на слова"
words = text.split()
print(words)

Результат выполнения кода:

['Пример', 'разделения', 'строки', 'на', 'слова']

Как видно из примера, метод split() возвращает список из отдельных слов в строке. Каждый элемент списка представляет собой одно слово.

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

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

В Python индексы используются для доступа к элементам списка, кортежа или строки. Как правило, индексы начинаются с нуля, то есть первый элемент имеет индекс 0, второй элемент имеет индекс 1 и так далее.

Но помимо положительных индексов, которые начинаются с 0, в Python также используются обратные индексы. Обратные индексы начинаются с -1, то есть последний элемент имеет индекс -1, предпоследний элемент имеет индекс -2 и так далее.

Используем функцию split() и отрицательный индекс -1 для нахождения последнего слова в строке:

my_string = "Это пример строки с несколькими словами"
words_list = my_string.split()  # Разбить строку на список слов
last_word = words_list[-1]  # Получить последнее слово из списка с помощью индекса -1
print(last_word)  # Вывод "словами"

Здесь мы сначала объявляем строку my_string, содержащую несколько слов. Затем мы используем метод split() для разбиения этой строки на список слов words_list. Наконец, мы получаем последнее слово, используя индекс -1 и сохраняем его в переменной last_word.

В конце мы выводим последнее слово на экран с помощью функции print().

Suppose str = 'UPPER("Sales"."PRODUCT_NAME" )' is my string and I want to get only 'PRODUCT_NAME' (the last word) from this string. I have tried the below technique but it doesn’t provide me the correct word as 'PRODUCT_NAME'. How can I achieve this? Is there any easy way to achieve this using regular expressions?

str='UPPER("Sales"."PRODUCTS"."PRODUCT_NAME" )'
val=str.strip("(|)")
val=val.split('.')
val_final=val[-1].strip('"')

jmd_dk's user avatar

jmd_dk

11.9k8 gold badges63 silver badges93 bronze badges

asked Nov 9, 2020 at 10:24

shee8's user avatar

Using re.findall for a regex option, we can try:

inp = 'UPPER("Sales"."PRODUCTS"."PRODUCT_NAME" )'
output = re.findall(r'^.*b(w+).*$', inp)
print(output[0])   # prints PRODUCT_NAME

For an explanation of how this works, the regex pattern will match everything up to the final word boundary, followed by the final word. We then access this match to print the result you want.

answered Nov 9, 2020 at 10:28

Tim Biegeleisen's user avatar

Tim BiegeleisenTim Biegeleisen

496k25 gold badges279 silver badges355 bronze badges

1

The strip() method removes stuff from the ends of the string only, so you need to do this after extracting the last word (with additional characters you don’t want):

string = 'UPPER("Sales"."PRODUCTS"."PRODUCT_NAME" )'
val_final = string.split('.')[-1].strip('" )')

Also, it’s not a good idea to use str as a variable name, as it overwrites the builtin str type.

More info on strip()

This removes all characters provided from both ends of the string. I suspect that by '(|)' you mean '(' or ')'. Just write this as split('()'). In the above solution I’ve left out '(' as it does not appear towards the end of the string. But '"' and ' ' does, so these I’ve included.

answered Nov 9, 2020 at 10:35

jmd_dk's user avatar

jmd_dkjmd_dk

11.9k8 gold badges63 silver badges93 bronze badges

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».

rrll

1 / 1 / 0

Регистрация: 11.04.2020

Сообщений: 67

1

Последнее слово в строке

25.04.2020, 15:58. Показов 23500. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Была вот такая задачка,в которой нужно было вывести последнее слово:

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

Входные данные
Входная строка содержит произвольную последовательность символов.

Выходные данные
Программа должна вывести последнее слово этой строки.

Примеры
входные данные
Abra babra cadabra
выходные данные
cadabra

Решение:

Python
1
2
3
str_1=input()
s2=str_1.split()
print(s2[-1])

Желательно так же по простому решить вот эту задачку:

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

Входные данные
Входная строка содержит произвольную последовательность символов.

Выходные данные
Программа должна вывести в первой строке самое длинное слово переданной ей строки, а во второй – длину этого слова. Если слов максимальной длины несколько — вывести первое встретившееся слово максимальной длины.

Примеры
входные данные
abra cadabra fibra
выходные данные
cadabra
7



0



codcw

814 / 526 / 214

Регистрация: 22.12.2017

Сообщений: 1,495

25.04.2020, 16:02

2

Python
1
2
3
>>> print(max(input().split(),key=len))
Abra babra cadabra
cadabra



0



rrll

1 / 1 / 0

Регистрация: 11.04.2020

Сообщений: 67

25.04.2020, 16:20

 [ТС]

3

Примеры
входные данные
abra cadabra fibra
выходные данные
cadabra
7

Пересмотри пожалуйста пример и свой код.Он выдает самое длинное,спору нет.
Я такой тоже сделал:

Python
1
2
3
str_1=input()
s2=str_1.split() 
print(max(s2))

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

Добавлено через 1 минуту
Примеры
входные данные
abra cadabra fibra
выходные данные
cadabra
7

Пересмотри пожалуйста пример и свой код.Он выдает самое длинное,спору нет.
Я такой тоже сделал:

Python
1
2
3
str_1=input()
s2=str_1.split() 
print(max(s2))

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



0



AlexMarkov

99 / 86 / 20

Регистрация: 10.09.2019

Сообщений: 708

25.04.2020, 16:31

4

Лучший ответ Сообщение было отмечено rrll как решение

Решение

Используйте функцию len():

Python
1
2
3
str_1=input()
s2=str_1.split() 
print(max(s2), len(max(s2)))



1



codcw

814 / 526 / 214

Регистрация: 22.12.2017

Сообщений: 1,495

25.04.2020, 16:41

5

Лучший ответ Сообщение было отмечено rrll как решение

Решение

rrll,

Цитата
Сообщение от rrll
Посмотреть сообщение

Я такой тоже сделал

если взять просто max для строк, то он будет сравнивать их по алфавиту а не по длине, именно поэтому я написал в своей программе key=len, пересмотрите

насчет длины вам уже подсказали

Python
1
2
a = max(input().split(), key = len))
print(a, len(a))

ещё раз, лучше возьмитесь за самое элементарное, изучите самое простое и не будет возникать таких вопросов

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



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

25.04.2020, 16:41

5

apiwi, вам нужен, как написал автор решения, список, в котором вы возьмете последнее значение. Оно берется как [-1]. А чтобы превратить вашу строку в список, вам нужно рассплитить ее по пробелам.

Написано

более двух лет назад

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти видимый горизонт
  • Как найти длину диагонали са1
  • Как найти друзей пожилым людям
  • Efo ошибка на стиральной машине electrolux как исправить
  • Зарплата ру мое резюме как найти

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии