Разбейте строку на естественный разрыв
При отображении заголовка (используя reportlab) я хотел бы разделить его на две строки, если он длиннее 45 символов. Пока у меня есть это:
if len(Title) < 45:
drawString(200, 695, Title)
else:
drawString(200, 705, Title[:45])
drawString(200, 685, Title[45:])
Проблема в том, что я хочу разделить заголовок только при естественном разрыве, например, в месте пробела. Как мне сделать это?
4 ответа
Посмотрите этот пример кода:
import textwrap
print("\n".join(textwrap.wrap("This is my sooo long title", 10)))
Выход:
This is my
sooo long
title
Смотрите полный документ Python: http://docs.python.org/library/textwrap.html
Использование rfind(' ', 0, 45)
чтобы найти последний пробел перед границей и сломать в этой позиции. Если пробела нет (rfind возвращает -1), используйте ваш код.
Не уверен насчет альтернатив. Я мог бы предложить нарисовать текстовое поле с фоновым цветом в качестве фоновой страницы с шириной = 45 и ShrinkToFit=1. Таким образом, текст более 45 будет сокращен в конце слов..
s = 'this is a long line with a bunch of text for sure and goes on and on ..'
brk = s.find(' ', 45)
if brk == -1:
print s
else:
print('{:s}\n{:s}'.format(s[:brk], s[brk+1:]))
Сверните свои и, возможно, не так элегантно..
this is a long line with a bunch of text for sure
and goes on and on ..