2012-09-28 22 views
10

私はいくつかのレポートを書いていますが、以下の動作を得るための簡単な方法があるかどうかを知りたいと思います。ネスト文字列形式

>>> '{:-^60}'.format('Percentage used: {:.2%}'.format(.4)) 
'------------------Percentage used: 40.00%-------------------' 

ご覧のとおり、私はテキストをセンタリングしてから、割合に整形された数値を印刷しています。しかし、私は別の内部のフォーマット関数を使用しています。可能であれば、以下のような単一の関数で同じことをしたいと思います。私は一般的な解決策を探しています。もちろん、

'$SOMETHING GOES HERE'.format(header = 'Percentage Used:',percentage = .4) 

は、それが整形オプションのだけではなく、アライメント

おかげに、ほとんどすべてで動作する、またはでしょう。

+2

かもしれません。 2つの数字のペアをフォーマットし、それぞれに少なくとも3つの文字を書いて、ペア全体を少なくとも10にすることを考えたとしましょう。 ''{:10}'のようなもの.format( '({:3}、{:3})'フォーマット(1,2)) '。それはここでも同じことです。これは、特定の要素ではなく、中央に配置する必要がある文字列全体です。したがって、書式設定された文字列を書式設定する必要があります。 @wimは正しいですが、 'center'はおそらく読みやすくなりますが、それは事実上同等です。 – abarnert

+0

ありがとう、ほとんど私はいくつかのアイデアを探しています。私はあなたがそれをどうやって行うことができるかは分かりませんが、多分他の機能や何かがトリックをすることができます。 @wimのものと似ています。しかし、私は自分がやりたいことはフォーマット機能自体によって制限されていると思います。 – Darkade

+0

組み込みの 'format'よりも強力で柔軟性のある(しかし複雑な)ものを探しているなら、' format'が議論されようとしている数年前から、人々はあらゆる種類の選択肢を提案し、それらのほとんどを実装しました。 PyPIやActiveStateのレシピコレクションを探してみてください(これはPyPIがまだ開発中であったためです)、必要なものを見つけられるかもしれません。 (私には特別な推奨事項はありません) – abarnert

答えて

8

より読みのオプションは、あなたの問題は本質的にネストされているように思えるstr.center

>>> 'Percentage used: {:.2%}'.format(.4).center(60, '-') 
'------------------Percentage used: 40.00%-------------------' 
+2

ありがとう、それは手元の問題を解決します。しかしそれはあまり一般的ではありません。しかし、@abarnertがコメントしたように、私がやりたいことはおそらく本質的に入れ子になっているでしょう – Darkade