如何使用逗号作为数千个分隔符来打印数字?

我想用逗号作为数千个分隔符在Python 2.6.1中打印一个整数。 例如,我想显示1234567号码为1,234,567 。 我会如何去做这件事? 我在Google上看到了很多例子,但我正在寻找最简单的实用方法。

它不需要特定于语言环境来决定句点和逗号。 我宁愿尽可能简单的事情。


对于Python≥2.7:

"{:,}".format(value)

按格式规范迷你语言,

','选项表示使用千位分隔符的逗号。 对于可识别语言环境的分隔符,请改为使用'n'整数表示类型。


我得到这个工作:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US')
'en_US'
>>> locale.format("%d", 1255000, grouping=True)
'1,255,000'

当然,您不需要国际化支持,但它很清晰,简洁,并使用内置库。

PS“%d”是通常的%风格的格式化程序。 您只能有一个格式化器,但它可以是任何您需要的字段宽度和精度设置。

PPS如果你不能让locale工作,我会建议Mark的答案的修改版本:

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)

递归对于负面情况非常有用,但每个逗号一次递归对我来说似乎有点过分。


删除不相关的部分并将其清理一下后,以下是区域设置分组代码:

(以下内容仅适用于整数)

def group(number):
    s = '%d' % number
    groups = []
    while s and s[-1].isdigit():
        groups.append(s[-3:])
        s = s[:-3]
    return s + ','.join(reversed(groups))

>>> group(-23432432434.34)
'-23,432,432,434'

这里已经有一些很好的答案。 我只是想补充一点以备将来参考。 在Python 2.7中将会有一个千位分隔符的格式说明符。 根据python文档,它的工作原理是这样的

>>> '{:20,.2f}'.format(f)
'18,446,744,073,709,551,616.00'

在python3.1中,你可以做同样的事情:

>>> format(1234567, ',d')
'1,234,567'
链接地址: http://www.djcxy.com/p/42721.html

上一篇: How to print number with commas as thousands separators?

下一篇: Comment out a Python code block