2009-08-31 14 views

答えて

18

2つの列のデータの最大長を知っている場合は、フォーマット修飾子を使用できます。たとえば、名前は最大20文字の長さで、価格は10個の文字に収まるだろう、あなたは

print "Name: %-20s Price: %10d" % (i.name, i.price) 

を行うことができます。これは、1つがタブとしてタブを使用すると、例えば(いくつかの状況では並ばないであろうよりも優れている場合名前は別のものよりかなり長いです)。

一部の名前が使用可能な領域に収まらない場合は、.形式修飾子を使用してデータを切り捨てることができます。たとえば、名前形式に「%-20.20s」を使用すると、20文字の列に収まるように、より長い名前が切り捨てられます。

+0

優れています。 Pythonでめったに使用しない関数の私のもう一つの思い出しです。この問題を自分自身で早期に発見し、タブで修正しました。今度は私のコードを読みやすくすることができます。 –

9

Vinayが述べたように、文字列形式指定子を使用します。

あなたが最大の長さがわからない場合は、リスト内の余分なパスをすることによってそれらを見つけることができます。

maxn, maxp = 0, 0 
for item in items: 
    maxn = max(maxn, len(item.name)) 
    maxp = max(maxp, len(str(item.price))) 

は、代わりに番号の'*'を使用し、引数として計算された幅を提供します。

for item in items: 
    print "Name: %-*s Price: %*d" % (maxn, item.name, maxp, item.price) 
0

strオブジェクトには、rjust()/ ljust()メソッドを使用することもできます。

関連する問題