4

在渲染标题(使用reportlab)时,如果它超过45个字符,我想将它分成两行。到目前为止,我有这个:

if len(Title) < 45:
    drawString(200, 695, Title)
else:
    drawString(200, 705, Title[:45])
    drawString(200, 685, Title[45:])

这样做的问题是我只想在自然中断处拆分标题,例如出现空格的地方。我该怎么做呢?

4

4 回答 4

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

于 2012-05-29T20:19:44.830 回答
1

用于rfind(' ', 0, 45)查找边界前的最后一个空格并在该位置中断。如果没有空格(rfind 返回 -1),请使用您拥有的代码。

于 2012-05-29T20:20:17.810 回答
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 ..
于 2012-05-29T20:22:33.120 回答
0

我不确定替代方案。我可以建议,将背景颜色的文本框绘制为宽度= 45 和 ShrinkToFit=1 的背景页面。所以超过 45 的文本会在词尾缩小。

于 2012-05-29T20:45:45.540 回答