将“十进制”分隔符添加到数字中

如何在Python中将1.000.000格式设置为1.000.000 ? 那里的'。' 是十进制标记千位分隔符。

如果你想添加一个千位分隔符,你可以写:

 >>> '{0:,}'.format(1000000) '1,000,000' 

但它只适用于Python 2.7及更高版本。

请参阅格式string语法

在旧版本中,您可以使用locale.format() :

 >>> import locale >>> locale.setlocale(locale.LC_ALL, '') 'en_AU.utf8' >>> locale.format('%d', 1000000, 1) '1,000,000' 

使用locale.format()的附加好处是它将使用您的语言环境的千位分隔符,例如

 >>> import locale >>> locale.setlocale(locale.LC_ALL, 'de_DE.utf-8') 'de_DE.utf-8' >>> locale.format('%d', 1000000, 1) '1.000.000' 

我真的不明白 但是这是我明白的:

您要将1123000转换为1,123,000。 你可以使用格式来做到这一点:

http://docs.python.org/release/3.1.3/whatsnew/3.1.html#pep-378-format-specifier-for-thousands-separator

例:

 >>> format(1123000,',d') '1,123,000' 

只是在这里扩大了答案:)

我需要有一个第千分隔符和限制浮点数的精度。

这可以通过使用以下格式string来实现:

 > my_float = 123456789.123456789 > "{:0,.2f}".format(my_float) '123,456,789.12' 

这描述了format() – 指定符的迷你语言:

 [[fill]align][sign][#][0][width][,][.precision][type] 

资料来源: https : //www.python.org/dev/peps/pep-0378/#current-version-of-the-mini-language

使用itertools可以给你更多的灵活性:

 >>> from itertools import zip_longest >>> num = "1000000" >>> sep = "." >>> places = 3 >>> args = [iter(num[::-1])] * places >>> sep.join("".join(x) for x in zip_longest(*args, fillvalue=""))[::-1] '1.000.000' 

这只是一个替代的答案。 您可以在python中使用split运算符,并通过一些奇怪的逻辑这是代码

 i=1234567890 s=str(i) str1="" s1=[elm for elm in s] if len(s1)%3==0: for i in range(0,len(s1)-3,3): str1+=s1[i]+s1[i+1]+s1[i+2]+"." str1+=s1[i]+s1[i+1]+s1[i+2] else: rem=len(s1)%3 for i in range(rem): str1+=s1[i] for i in range(rem,len(s1)-1,3): str1+="."+s1[i]+s1[i+1]+s1[i+2] print str1 

产量

 1.234.567.890