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

2022-09-05 01:06:24

如何打印带有逗号作为千位分隔符的整数?

1234567   ⟶   1,234,567

它不需要特定于区域设置即可在句点和逗号之间做出决定。


答案 1

区域设置不知情

'{:,}'.format(value)  # For Python ≥2.7
f'{value:,}'          # For Python ≥3.6

区域设置感知

import locale
locale.setlocale(locale.LC_ALL, '')  # Use '' for auto, or force e.g. to 'en_US.UTF-8'

'{:n}'.format(value)  # For Python ≥2.7
f'{value:n}'          # For Python ≥3.6

参考

格式规范迷你语言

该选项表示使用逗号表示千位分隔符。对于区域设置感知分隔符,请改用整数表示类型。',''n'


答案 2

我让它工作:

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

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

附言:“%d”是通常的%样式格式化程序。您只能有一个格式化程序,但在字段宽度和精度设置方面,它可以是您需要的任何内容。

附言如果你无法上班,我建议你修改一下马克的答案: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)

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