4

数値を文字列としてフォーマットして、その前にいくつかのスペースが入るようにするにはどうすればよいですか?短い数字の5の前に十分なスペースを設けて、スペースと5の長さが52500と同じになるようにします。以下の手順は機能しますが、これを行うための組み込みの方法はありますか?

a = str(52500)
b = str(5)
lengthDiff = len(a) - len(b)
formatted = '%s/%s' % (' '*lengthDiff + b, a)
# formatted looks like:'     5/52500'
4

5 に答える 5

8

フォーマット演算子

>>> "%10d" % 5
'         5'
>>> 

specを使用*すると、フィールド長を引数にすることができます。

>>> "%*d" % (10,5)
'         5'
>>> 
于 2009-03-31T04:49:27.820 に答える
2

%*dフォーマッターを使用して幅を指定できます。int(math.ceil(math.log(x, 10)))桁数が表示されます。修飾子は数値を消費します。*その数値は、スペースを空けるスペースの数を意味する整数です。したがって、'%*d'%(width、num) `を実行することで、幅を指定し、Python文字列をさらに操作することなく数値をレンダリングできます。

これは、math.logを使用して「outof」番号の長さを確認するソリューションです。

import math
num = 5
outof = 52500
formatted = '%*d/%d' % (int(math.ceil(math.log(outof, 10))), num, outof)

別の解決策は、outof番号を文字列としてキャストし、len()を使用することです。必要に応じて、これを行うことができます。

num = 5
outof = 52500
formatted = '%*d/%d' % (len(str(outof)), num, outof)
于 2009-03-31T05:02:34.480 に答える
2

'%* s /%s'%(len(str(a))、b、a)

于 2009-03-31T05:03:39.067 に答える
1

文字列フォーマット操作を参照してください:

s = '%5i' % (5,)

最大長を含めることにより、フォーマット文字列を動的に構築する必要があります。

fmt = '%%%ii' % (len('52500'),)
s = fmt % (5,)
于 2009-03-31T04:49:56.523 に答える
0

あなたが何を求めているのか正確にはわかりませんが、これは近くに見えます:

>>> n = 50
>>> print "%5d" % n
   50

より動的になりたい場合は、次のようなものを使用してrjustください。

>>> big_number = 52500
>>> n = 50
>>> print ("%d" % n).rjust(len(str(52500)))
   50

あるいは:

>>> n = 50
>>> width = str(len(str(52500)))
>>> ('%' + width + 'd') % n
'   50'
于 2009-03-31T04:45:57.097 に答える