Python で整数を K で数千、M で数百万を表す文字列にフォーマットし、カンマの後に数桁だけを残す簡単な方法は何ですか?
7436313 を 7.44M として、2345 を 2,34K として表示したいと思います。
そのために使用できる % 文字列書式演算子はありますか? それとも、ループ内で実際に 1000 で除算し、結果の文字列を段階的に構築することによってのみ行うことができますか?
Python で整数を K で数千、M で数百万を表す文字列にフォーマットし、カンマの後に数桁だけを残す簡単な方法は何ですか?
7436313 を 7.44M として、2345 を 2,34K として表示したいと思います。
そのために使用できる % 文字列書式演算子はありますか? それとも、ループ内で実際に 1000 で除算し、結果の文字列を段階的に構築することによってのみ行うことができますか?
それを行う組み込み関数はないと思います。自分でロールする必要があります。たとえば、次のようになります。
def human_format(num):
magnitude = 0
while abs(num) >= 1000:
magnitude += 1
num /= 1000.0
# add more suffixes if you need them
return '%.2f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])
print('the answer is %s' % human_format(7436313)) # prints 'the answer is 7.44M'
数値化ライブラリは良いです。
from numerize import numerize
a = numerize.numerize(1000)
print(a)
1k
これを指摘してくれてありがとう@tdy、
a = numerize.numerize(999999)
print(a) # 1000K
1000K
ドキュメントによると、文字列フォーマット演算子はありません。私はそのようなことを聞いたことがないので、あなたが提案するように、あなたはあなた自身を転がさなければならないかもしれません。
そのためのフォーマット演算子はないと思いますが、結果が1から999になるまで1000で除算し、コンマの後に2桁のフォーマット文字列を使用することができます。単位は、ほとんどの場合、単一の文字(またはおそらく小さな文字列)であり、文字列または配列に格納して、分割するたびに繰り返すことができます。
このような組み込み機能については知りませんが、役立つ可能性のあるリストスレッドをいくつか示します。
http://coding.derkeiler.com/Archive/Python/comp.lang.python/2005-09/msg03327.html http://mail.python.org/pipermail/python-list/2008-August/503417.html