我得到这个工作:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US')
'en_US'
>>> locale.format("%d", 1255000, grouping=True)
'1,255,000'
当然,你不需要国际化支持,但它是清晰,简洁,并使用内置的库。
P.S。 “%d”是通常的%格式格式器。您只能有一个格式化程序,但它可以是任何您需要的字段宽度和精度设置。
P.P.S.如果你不能得到locale工作,我建议一个修改版本的马克的答案:
def intWithCommas(x):
if type(x) not in [type(0), type(0L)]:
raise TypeError("Parameter must be an integer.")
if x < 0:
return '-' + intWithCommas(-x)
result = ''
while x >= 1000:
x, r = divmod(x, 1000)
result = ",%03d%s" % (r, result)
return "%d%s" % (x, result)
递归对于负数情况很有用,但每个逗号的递归似乎对我有点过分。