数値に3桁ごとのコンマを入れる
import locale locale.setlocale(locale.LC_NUMERIC, 'ja_JP') locale.setlocale(locale.LC_MONETARY, 'en_US') # 2011年日本の人口 & GDP(USドル) population = 127817277 gdp = 5867200000000 print locale.format('%d', population, True) print locale.currency(gdp, False, True)
127,817,277 5,867,200,000,000.00
日本/アメリカは3桁コンマ区切りが標準なので、ロケールの設定をそのまま使うのがお手軽です。locale.format、locale.currencyとも第3引数で桁のグループ化(区切り文字の有無)をTrue/Falseで指定します (ちなみにlocale.currencyの第2引数は通貨記号の有無の指定です)。
追記
正規表現を使う場合も、先読みを使う(?=... ?!...)とか、リバースかけて先頭から区切り元に戻すとかいろいろ方法があります。ひとまず先読みを使った方法で。
import re print re.sub(r'(\d)(?=(\d{3})+(?!\d))', '\\1,', str(gdp))
5,867,200,000,000
なお「後に続く桁数が3の倍数ならコンマを入れる」というやり方ですので、小数点以下が4桁以上あると小数点以下も区切ってしまいます。
追記2
小数点以降は区切らない方法。これでいいのかな?
import re from decimal import Decimal d = Decimal('-12345678901234567.89012345') print re.sub(r'(\d)(?=(\d{3})+(?!\d)[\.$])', r'\1,', str(d))
-12,345,678,901,234,567.89012345