如何在Python中将1000000
格式化为1.000.000
?在哪里'。'是十进制标记千位分隔符。
答案 0 :(得分:102)
如果要添加千位分隔符,可以写:
>>> '{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'
答案 1 :(得分:17)
我真的不明白;但这是我的理解:
您想将1123000转换为1,123,000。您可以使用格式:
示例:
>>> format(1123000,',d')
'1,123,000'
答案 2 :(得分:12)
在这里稍微扩展一下答案:)
我需要都有千分之一的分隔符并限制浮点数的精度。
这可以通过使用以下格式字符串来实现:
> 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
答案 3 :(得分:3)
一个主意
def itanum(x):
return format(x,',d').replace(",",".")
>>> itanum(1000)
'1.000'
答案 4 :(得分:1)
使用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'
答案 5 :(得分:1)
根据Mikel的回答,我在matplotlib情节中实现了他的解决方案。我想有些人可能觉得它很有用:
ax=plt.gca()
ax.get_xaxis().set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, loc: locale.format('%d', x, 1)))
答案 6 :(得分:0)
这里只是一个替代答案。 您可以在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
答案 7 :(得分:0)
奇怪的是,没有人提到使用正则表达式的直接解决方案:
import re
print(re.sub(r'(?<!^)(?=(\d{3})+$)', r'.', "12345673456456456"))
提供以下输出:
12.345.673.456.456.456
如果您只想在逗号之前分隔数字,它也有效:
re.sub(r'(?<!^)(?=(\d{3})+,)', r'.', "123456734,56456456")
给出:
123.456.734,56456456
正则表达式使用前瞻来检查给定位置后的位数是否可被3整除。