Вырезание строки после x символов в пробеле в python

Я хочу вырезать длинный текст после символов x, но я не хочу вырезать слово посередине, я хочу вырезать последние пробелы перед символами x:

'This is a sample text'[:20] 

дает мне

 'This is a sample tex' 

но я хочу

 'This is a sample' 

Другой пример:

 'And another sample sentence'[:15] 

дает мне

 'And another sam' 

но я хочу

 'And another' 

Каков самый простой способ сделать это?

3 Solutions collect form web for “Вырезание строки после x символов в пробеле в python”

 import textwrap lines = textwrap.wrap(text, 20) # then use either lines[0] # or '\n'.join(lines) 

Вы можете использовать str.rsplit() чтобы удалить все после последнего пробела:

 example[:20].rsplit(' ', 1)[0] 

Это ограничивает разделение на первое пространство справа, а индекс [0] принимает все, что было отщеплено перед этим пространством.

Если пробелов нет , это просто возвращает исходную (нарезанную) строку.

Упростили два других ответа, но только для удовольствия, с регулярным выражением:

 import re r = re.compile('.{,20}(?<! )(?= |\Z|\A)') for s in ('This is a sample text', 'abcdefghijklmnopqrstuvwxyz ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'This is 1 first sample text ', 'This is 1 again sample text', 'A great blank here', 'Another blank here', 'A short text', ' little indent', ' great indent', 'ocean', '!', ''): print ('-----------------------\n' " ....5...10...15...20\n" '%r\n%r' % (s, r.match(s).group() ) ) 

результат

 ----------------------- ....5...10...15...20 'This is a sample text' 'This is a sample' ----------------------- ....5...10...15...20 'abcdefghijklmnopqrstuvwxyz ' '' ----------------------- ....5...10...15...20 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' '' ----------------------- ....5...10...15...20 'This is 1 first sample text ' 'This is 1 first' ----------------------- ....5...10...15...20 'This is 1 again sample text' 'This is 1 again' ----------------------- ....5...10...15...20 'A great blank here' 'A great blank' ----------------------- ....5...10...15...20 'Another blank here' 'Another blank' ----------------------- ....5...10...15...20 'A short text' 'A short text' ----------------------- ....5...10...15...20 ' little indent' ' little indent' ----------------------- ....5...10...15...20 ' great indent' '' ----------------------- ....5...10...15...20 'ocean' 'ocean' ----------------------- ....5...10...15...20 '!' '!' ----------------------- ....5...10...15...20 '' '' 
  • Распространение приложения python
  • Определите, доступна ли функция в модуле Python
  • Почему у Python нет истинных констант? Разве это не опасно?
  • Facebook События и часовые пояса, как конвертировать UTC datetime в то, что ожидает facebook?
  • Динамическая загрузка кода приложения Python из базы данных в Google App Engine
  • Как определить язык ОС по умолчанию в python?
  • Печать версии Python на выходе
  • Добавление вектора рисования
  • Рамочная программа Tornado (FacebookGraphMixin)
  • Google App Engine говорит: «Должен пройти проверку подлинности». При попытке развернуть любое приложение
  • «С» в Python с несколькими файлами для обработки
  • Python - лучший язык программирования в мире.