9

float に 1000 個の区切り文字が必要です。私がやっていることは次のとおりです。

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> print '{0:n}'.format(123456.0)
123,456

整数部分が 7 桁以上の場合は機能しません。

>>> print '{0:n}'.format(1234567.0)
1.23457e+06

私が見つけた回避策は、フォーマットする前に float を整数に変換することです。

>>> print '{0:n}'.format(int(1234567.0))
1,234,567

最初に整数に変換する必要なく、すべての浮動小数点数を処理するフォーマット文字列はありますか?

4

2 に答える 2

15

ロケール設定は、スレッドセーフではなく、ロケールが実際に何をするかに大きく依存しているため、少し醜いです。それはあなたが望むものかもしれませんが、Python の内部バージョン (2.7 以降) は次のとおりです。

>>> '{0:,.2f}'.format(123466666)
'123,466,666.00'

仕様については、http://www.python.org/dev/peps/pep-0378/を参照してください。

于 2014-02-19T16:58:30.453 に答える
7

ロケール モジュールの format 関数を使用します。

>>> locale.setlocale(locale.LC_ALL, 'English')
>>> 'English_United States.1252'

>>> print locale.format('%.2f', 123456789.0, True)
>>> 123,456,789.00
于 2012-04-19T14:28:29.403 に答える