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