Python的format()函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhchs2012/article/details/84328742

前言

上篇博文,我们用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函数在解决数字格式化输出的时候是很强大的,可以组合使用其中的规则来达到个性化定制的目的。

END

猜你喜欢

转载自blog.csdn.net/zhchs2012/article/details/84328742