如何使用逗号作为数千个分隔符来打印数字?
我想用逗号作为数千个分隔符在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?