Python: отрезать последнее слово предложения?

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

Я думаю

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

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

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

любые примеры кода очень ценятся.

7 ответов


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

пример:

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

rsplit является сокращением для "обратного разделения", и в отличие от обычного split работает с конца строки. Второй параметр-это максимальное количество делений , например значение 1 даст вам двухэлементный список в результате (так как был сделан один сплит, который привел к двум части входной строки).


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

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

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


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

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

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

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


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


или

import re

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

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

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