Python2.6
以后,新增了一种字符串格式化输出函数 str.format()
,非常简单方便。
语法:
通过 {}
和 :
来替代 %
使用简介:
- 1、 通过位置:
这里的位置是指format()
中参数的位置,0 表示第一个位置的参数,1 表示第二个位置的参数,以此类推。
In [1]: '{0},{1}'.format('kzc',18)
Out[1]: 'kzc,18'
In [2]: '{},{}'.format('kzc',18)
Out[2]: 'kzc,18'
In [3]: '{1},{0},{1}'.format('kzc',18)
Out[3]: '18,kzc,18'
字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
- 2、通过关键字参数
通过format()
中的参数名,或者字典中的键值来指定,这种方式比通过位置来指定要好,因为只有0,1,2这些数字可能会让人搞混。
In [5]: '{name},{age}'.format(age=18,name='kzc')
Out[5]: 'kzc,18'
In [5] : "{0[name]} is {0[age]} years old.".format({"name":"lili","age":12})
Out[5] : lili is 12 years old.
- 3、通过对象属性
class Person:
def __init__(self,name,age):
self.name,self.age = name,age
def __str__(self):
return 'This guy is {self.name},is {self.age} old'.format(self=self)
In [2]: str(Person('kzc',18))
Out[2]: 'This guy is kzc,is 18 old'
- 4、通过下标
这个是在list
中用到的。
In [7]: p=['kzc',18]
In [8]: '{0[0]},{0[1]}'.format(p)
Out[8]: 'kzc,18'
- 5、格式限定符
format()函数还有非常丰富的格式限定符,其语法是:在{}
中带:
。
比如:填充与对齐,填充与对齐经常一起使用。
^、<、>
分别表示居中、左对齐、右对齐,该符号后面可以带上宽度。
:
号后面是填充的字符,注意只能是一个字符,不指定的话,默认是用空格填充。
In [15]: '{:>8}'.format('189')
Out[15]: ' 189'
In [16]: '{:0>8}'.format('189')
Out[16]: '00000189'
In [17]: '{:a>8}'.format('189')
Out[17]: 'aaaaa189'
- 6、精度与类型f
精度常跟类型 f
一起使用
In [44]: '{:.2f}'.format(321.33345)
Out[44]: '321.33'
其中.2表示长度为2的精度,f表示float类型。
还有其他类型,主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。
In [54]: '{:b}'.format(17)
Out[54]: '10001'
In [55]: '{:d}'.format(17)
Out[55]: '17'
In [56]: '{:o}'.format(17)
Out[56]: '21'
In [57]: '{:x}'.format(17)
Out[57]: '11'
- 7、用
,
号还能用来做金额的千位分隔符。
In [47]: '{:,}'.format(1234567890)
Out[47]: '1,234,567,890'
- 8、运行时动态指定浮点数精度:
>>> for i in range(5):
... print('%.*f' % (i, 1.234234234234234))
...
'1'
'1.2'
'1.23'
'1.234'
'1.2342'
还可以这样实现:
>>> for i in range(5):
... print('{0:.{1}f}'.format(1 / 3.0, i) )
...
'0'
'0.3'
'0.33'
'0.333'
'0.3333'
(说明:本文大部分内容是下面博客的,其中加入了我自己的理解,以及还有其他相关的知识。)