63

Python で整数を K で数千、M で数百万を表す文字列にフォーマットし、カンマの後に数桁だけを残す簡単な方法は何ですか?

7436313 を 7.44M として、2345 を 2,34K として表示したいと思います。

そのために使用できる % 文字列書式演算子はありますか? それとも、ループ内で実際に 1000 で除算し、結果の文字列を段階的に構築することによってのみ行うことができますか?

4

11 に答える 11

86

それを行う組み込み関数はないと思います。自分でロールする必要があります。たとえば、次のようになります。

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'
于 2009-02-23T21:11:36.167 に答える
1

数値化ライブラリは良いです。

from numerize import numerize
a = numerize.numerize(1000)
print(a)
1k

これを指摘してくれてありがとう@tdy、

a = numerize.numerize(999999) 
print(a)  # 1000K 
1000K
于 2021-07-20T11:59:15.657 に答える
0

ドキュメントによると、文字列フォーマット演算子はありません。私はそのようなことを聞​​いたことがないので、あなたが提案するように、あなたはあなた自身を転がさなければならないかもしれません。

于 2009-02-23T21:02:49.247 に答える
0

そのためのフォーマット演算子はないと思いますが、結果が1から999になるまで1000で除算し、コンマの後に2桁のフォーマット文字列を使用することができます。単位は、ほとんどの場合、単一の文字(またはおそらく小さな文字列)であり、文字列または配列に格納して、分割するたびに繰り返すことができます。

于 2009-02-23T21:05:36.853 に答える
0

このような組み込み機能については知りませんが、役立つ可能性のあるリストスレッドをいくつか示します。

http://coding.derkeiler.com/Archive/Python/comp.lang.python/2005-09/msg03327.html http://mail.python.org/pipermail/python-list/2008-August/503417.html

于 2009-02-23T21:10:45.420 に答える