给整数添加逗号最简单的方法是什么?
4 个回答
12
这段内容摘自webpy的utils.py
文件:
def commify(n):
"""
Add commas to an integer `n`.
>>> commify(1)
'1'
>>> commify(123)
'123'
>>> commify(1234)
'1,234'
>>> commify(1234567890)
'1,234,567,890'
>>> commify(123.0)
'123.0'
>>> commify(1234.5)
'1,234.5'
>>> commify(1234.56789)
'1,234.56789'
>>> commify('%.2f' % 1234.5)
'1,234.50'
>>> commify(None)
>>>
"""
if n is None: return None
n = str(n)
if '.' in n:
dollars, cents = n.split('.')
else:
dollars, cents = n, None
r = []
for i, c in enumerate(str(dollars)[::-1]):
if i and (not (i % 3)):
r.insert(0, ',')
r.insert(0, c)
out = ''.join(r)
if cents:
out += '.' + cents
return out
还有其他解决方案可以在这里找到。
13
记得先正确设置地区信息哦。
103
到目前为止,没有人提到在2.7版本中新增的','
选项,这个选项是为了格式规范小语言而添加的——你可以查看PEP 378: 用于千位分隔符的格式说明符,在Python 2.7的新特性文档中。这个功能很简单,因为你不需要去处理locale
(但由于这个原因,它在国际化方面有些限制,具体可以看原始的PEP 378)。它可以用于浮点数、整数和小数——以及小语言规范中提供的所有其他格式化功能。
示例用法:
print format(1234, ",d") # -> 1,234
print "{:,d}".format(1234) # -> 1,234
print(f'{1234:,d}') # -> 1,234 (Python 3.6+)
注意:虽然这个新功能确实很方便,但实际上使用locale
模块并没有那么复杂,正如其他人所建议的那样。使用locale
的好处是,输出的数字、日期和时间等可以自动遵循各个国家使用的千位(和其他)分隔符的规范。而且,你可以很容易地使用电脑的默认设置,而不需要学习一堆语言和国家代码。你只需要做的是:
import locale
locale.setlocale(locale.LC_ALL, '') # empty string for platform's default settings
完成这些后,你可以直接使用通用的'n'
类型代码来输出数字(包括整数和浮点数)。在我所在的地方,逗号被用作千位分隔符,所以在设置好上面的地区后,结果会是这样的:
print format(1234, "n") # -> 1,234
print "{:n}".format(1234) # -> 1,234
世界上大部分地方使用句点而不是逗号来作为千位分隔符,因此在许多地方设置默认地区(或者在setlocale()
调用中明确指定这样的地区代码)会产生以下结果:
print format(1234, "n") # -> 1.234
print "{:n}".format(1234) # -> 1.234
基于'd'
或',d'
格式类型说明符的输出不受使用(或不使用)setlocale()
的影响。然而,如果你使用locale.format()
或locale.format_string()
函数,'d'
说明符就会受到影响。