上篇博文,我们用format(number,',')
快速实现了对数字千分位的分隔。
熟悉python的人都知道,foramt
函数更常见的用法其实是str.format()
,其基本语法是通过{}
来代替以前的%
。
示例:
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
注意:如果在字符串中需要直接展示花括号,则用另一个花括号包裹起来转义。
见示例:
>>> "{{我是谁}}:{}".format("皮卡丘")
'{我是谁}:皮卡丘'
也支持参数式填写,有点像SHELL的变量:
>>> "我是谁:{pikachu}".format(pikachu="皮卡丘")
'我是谁:皮卡丘'
数字 | 格式 | 输出 | 描述 |
---|---|---|---|
3.141592 | {:.2f} | 3.14 | 保留小数点后两位 |
3.141592 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
3.141592 | {:.0f} | 3 | 不带小数,四舍五入 |
3 | {:0>2d} | 03 | 数字补零 (填充左边, 宽度为2) |
3 | {x<4d} | 3xxx | 数字补x (填充右边, 宽度为4) |
123456789 | {:,} | 123,456,789 | 千分位隔开 |
0.38 | {:.2%} | 38% | 百分比格式 |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
11 | {:b} | 1011 | 二进制转化 |
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
看到这里,其实上一篇千分位的处理,还有更进阶的内容。
由表可知,千分位的分隔可以直接使用"{:,}".format(nunber)
来解决,这里有个问题,如果分隔的时候带小数,且最后几位是0的话,在被format
转化成字符串的时候会被忽略,就像这样:
>>> "{:,}".format(12345678.90)
'12,345,678.9'
>>> format(12345678.90,',')
'12,345,678.9'
如果我们希望保留想要的小数位数,需要这样子:
>>> "{:,.2f}".format(12345678.90)
'12,345,678.90'
>>> "{:,.4f}".format(12345678.90) #任意几位都行
'12,345,678.9000'
所以,format
函数在解决数字格式化输出的时候是很强大的,可以组合使用其中的规则来达到个性化定制的目的。