Подтвердить что ты не робот

Python: Отключить последнее слово предложения?

Какой лучший способ отрезать последнее слово из блока текста?

Я могу думать о

  • Разделите его на список (пробелами) и удалите последний элемент, затем сверяйте список.
  • Для замены последнего слова используйте регулярное выражение.

В настоящее время я принимаю подход №1, но я не знаю, как объединить список...

content = content[position-1:position+249] # Content
words = string.split(content, ' ')
words = words[len[words] -1] # Cut of the last word

Приветствуются любые примеры кода.

4b9b3361

Ответ 1

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

Пример:

>>> text = 'Python: Cut of the last word of a sentence?'
>>> text.rsplit(' ', 1)[0]
'Python: Cut of the last word of a'

Ответ 2

Вы должны обязательно разделить, а затем удалить последнее слово, потому что регулярное выражение будет иметь как больше осложнений, так и ненужные служебные данные. Вы можете использовать более Pythonic-код (при условии, что контент является строкой):

' '.join(content.split(' ')[:-1])

Это разделяет содержимое на слова, принимает все, кроме последнего слова, и присоединяет слова с пробелами.

Ответ 3

Если вам нравится компактность:

' '.join(content.split(' ')[:-1]) + ' ...'

Ответ 4

Если вы хотите сохранить свой текущий метод, используйте ' '.join(words), чтобы объединить список.

Вы также можете заменить words = words[len[words -1] на words = words[:-1], чтобы использовать сортировку списка.

Ответ 5

ИЛИ

import re

print ' '.join(re.findall(r'\b\w+\b', text)[:-1])

Ответ 6

' '.join(words) вернет список вместе.

Ответ 7

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

>>> text = 'Python: Cut of the last word of a sentence?'
>>> text[:text.rfind(' ')]
'Python: Cut of the last word of a'