4

(reportlab を使用して) タイトルをレンダリングするときに、45 文字を超える場合は 2 行に分割したいと考えています。これまでのところ、私はこれを持っています:

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

代替案についてはわかりません。width= 45 および ShrinkToFit=1 の背景ページとして、背景色でテキスト ボックスを描画することをお勧めします。したがって、45 を超えるテキストは単語の末尾で縮小されます。

于 2012-05-29T20:45:45.540 に答える
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 に答える