自 python2.6 开始,新增了一种格式化字符串的函数 str.format(),可谓威力十足。那么,他跟之前的 % 型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱。语法
它通过 {} 和: 来代替 %。" 映射 " 示例
通过位置
- 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 才可以。通过关键字参数
- In[5] : ' {
- name
- },
- {
- age
- }'.format(age = 18, name = 'kzc') Out[5] : 'kzc,
- 18'
通过对象属性
- 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'
通过下标
- In[7] : p = ['kzc', 18] In[8] : ' {
- 0[0]
- },
- {
- 0[1]
- }'.format(p) Out[8] : 'kzc,
- 18'
有了这些便捷的 "映射" 方式,我们就有了偷懒利器。基本的 python 知识告诉我们,list 和 tuple 可以通过 "打散" 成普通参数给函数,而 dict 可以打散成关键字参数给函数(通过和 *)。所以可以轻松的传个 list/tuple/dict 给 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'
精度与类型 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'
用,号还能用来做金额的千位分隔符。
- In[47] : ' {: ,
- }'.format(1234567890) Out[47] : '1,
- 234,
- 567,
- 890'
格式转化
- !s、!a、!r
一个对象本身不是 str,ascii,repr 格式,可以使用
- !s、!a、!r,
- 将其转成
- str,ascii,repr
示例请参考,Python cook 第八章 P230
Python 强大的格式化 format
来源: http://www.bubuko.com/infodetail-2067514.html