2016-11-17 3 views
1

私は特定のサイズベースの変数で文字列書式を使用するにはどうすればよいですか?

"%2d"%(x) 

を使用する場合、私はxの文字列を取得し、2の少なくとも大きさであり、xの長さが2よりも短い場合、私はそれの前にスペースを取得することがわかっています。 しかし、変数として2を与えるにはどうしたらいいですか?たとえば :

"%nd"%(2,1) 
' 1' 

は、それはPythonで可能ですか?または、ループを作成する必要がありますか?

+3

' '%* D' %(N、X) ' – vaultah

+0

@vaultahが正しい動作しなければなりません。それは私のために働いています。 –

+0

FWIW新しいフォーマットはPython 2.7で動作するはずです: ''{:> {}}'フォーマット(x、n)' – Billy

答えて

1

使用*と実際の幅は、値のタプルの次の要素から読み込まれます、と変換する値以下のいずれかになります。

>>> "%*d" % (2, 1) 
' 1' 

これは、ドキュメントのString Formatting Operationsセクションに記載されて - それは言う:

  1. 最小フィールド幅(オプション)。 '*'(アスタリスク)で指定すると、実際の幅はタプルの次の要素から値で読み込まれ、変換するオブジェクトは最小のフィールド幅とオプションの精度の後になります。
+0

ありがとうございます! これは@vaultahがこの作品をコメントしたものです! –

1

あなたは新しいスタイルの書式とより冗長であることを選択できます

>>> '{:{width}d}'.format(1, width=2) 
' 1' 
+0

新しいスタイルのファンではありませんが動作します –

+2

@guy:より強力な(そして簡単に、あなたはそれのハングアップを得る)ので、私はあなたがそれを学ぶために時間を取るか、作ることをお勧めします。 – martineau

関連する問題