在渲染标题时(使用reportlab),如果长度超过45个字符,我想将它分成两行。到目前为止,我有这个:
if len(Title) < 45:
drawString(200, 695, Title)
else:
drawString(200, 705, Title[:45])
drawString(200, 685, Title[45:])
这个问题是我只想在自然中断时分割标题,例如空格出现的位置。我该如何完成这项工作?
答案 0 :(得分:11)
请参阅此示例代码:
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#module-textwrap
答案 1 :(得分:1)
使用rfind(' ', 0, 45)
查找边界之前的最后一个空格并在该位置处中断。如果没有空格(rfind返回-1),请使用您拥有的代码。
答案 2 :(得分:0)
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 ..
答案 3 :(得分:0)
我不确定替代品。我建议,用背景颜色绘制文本框作为背景页面,宽度= 45,ShrinkToFit = 1。所以45以上的文字会在文字结尾处缩小。