これは、このフォーマット関数を作成するためのクリーンな方法です。
def percent(value,digits=0):
return ('{0:.%d%%}' % digits).format(value)
>>> percent(0.1565)
'16%'
>>> percent(0.1565,2)
'15.65%'
問題は、指定された桁数で数値をフォーマットすることです。「%」演算子とフォーマットメソッドの両方を使用するのは好きではありません。
これは、このフォーマット関数を作成するためのクリーンな方法です。
def percent(value,digits=0):
return ('{0:.%d%%}' % digits).format(value)
>>> percent(0.1565)
'16%'
>>> percent(0.1565,2)
'15.65%'
問題は、指定された桁数で数値をフォーマットすることです。「%」演算子とフォーマットメソッドの両方を使用するのは好きではありません。
私はこれが好きです:
'{0:.{1}%}'.format(value, digits)
テスト:
>> '{0:.{1}%}'.format(0.1565, 0)
'16%'
>> '{0:.{1}%}'.format(0.1565, 2)
'15.65%'
*
printf
-スタイルの文字列フォーマットのために、あなたが望むことをします。
>>> def percent(value, digits=0):
... return '%.*f%%' % (digits, value * 100)
...
>>> percent(0.1565, 2)
'15.65%'
高度な文字列フォーマット(PEP 3101で定義され、7.1.3で文書化されています。フォーマット文字列構文)は、1回のパスでこれを実行できないようです。(7.1.3.1を参照してください。フォーマット仕様Mini-Language:のみprecision
ですinteger
。)
ドキュメントから:
最小フィールド幅(オプション)。'*'(アスタリスク)として指定された場合、実際の幅は値のタプルの次の要素から読み取られ、変換するオブジェクトは最小フィールド幅とオプションの精度の後になります。
例:
def percent(value, digits=0):
print '%.*f%%' % (digits, value*100)
>>> percent(0.1565, 2)
15.65%