在自然休息时分割一个字符串

时间:2012-05-29 20:14:26

标签: python

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

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

这个问题是我只想在自然中断时分割标题,例如空格出现的位置。我该如何完成这项工作?

4 个答案:

答案 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以上的文字会在文字结尾处缩小。