python1加到1000_python-将“十进制标记”千位分隔符添加到一个数字

介绍了在Python中如何使用格式化字符串、locale模块、format()函数等方法为数字添加千位分隔符,包括浮点数的精度控制。
摘要由CSDN通过智能技术生成

python-将“十进制标记”千位分隔符添加到一个数字

如何在Python中将1000000格式化为1.000.000? 哪里是“。” 是带小数点的千位分隔符。

8个解决方案

103 votes

如果要添加千位分隔符,可以编写:

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

'1,000,000'

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

请参阅格式字符串语法。

在旧版本中,可以使用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'

Mikel answered 2020-01-19T04:34:39Z

17 votes

我不是很了解。 但是我的理解是:

您想要将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'

utdemir answered 2020-01-19T04:35:12Z

12 votes

只是在这里扩展答案:)

我既要有千分之一的分隔符,又要限制浮点数的精度。

这可以通过使用以下格式字符串来实现:

> 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]

jpihl answered 2020-01-19T04:35:50Z

4 votes

一个主意

def itanum(x):

return format(x,',d').replace(",",".")

>>> itanum(1000)

'1.000'

Giovanni G. PY answered 2020-01-19T04:36:10Z

1 votes

使用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'

Eugene Yarmash answered 2020-01-19T04:36:29Z

1 votes

利用Mikel的答案,我在matplotlib图中实现了他的解决方案。 我认为有些人可能会觉得有帮助:

ax=plt.gca()

ax.get_xaxis().set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, loc: locale.format('%d', x, 1)))

Marcus Seuser answered 2020-01-19T04:36:49Z

0 votes

这只是一个替代答案。您可以在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

anand tripathi answered 2020-01-19T04:37:14Z

0 votes

奇怪的是,没有人提到使用正则表达式的简单解决方案:

import re

print(re.sub(r'(?

提供以下输出:

12.345.673.456.456.456

如果只想在逗号前分开数字,它也可以使用:

re.sub(r'(?

给出:

123.456.734,56456456

正则表达式使用前瞻性检查给定位置后的位数是否可被3整除。

Andrey Tyukin answered 2020-01-19T04:37:51Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值