自python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快速处理各种字符串。通过{}和:来代替%。
请看下面的示例,基本上总结了format函数在python的中所有用法:
# 通过位置
'{0},{1}'.format('aa', 2.2) # {}内的序号为format()参数对应的序号,
# a,20
'{},{}'.format('aa', 2.2, 'bb', 3.3) # 缺省模式下默认从0开始,多余的参数不传进去
# a,20
'{1},{0},{1}'.format('a', 22)
# 22,a,22
# 通过关键字参数
'{name},{age}'.format(age=18, name='chuhao')
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return '她是个{self.name},今年{self.age}'.format(self=self)
print(Person('大佬',21))
# 通过映射 list
a_list = ['大佬', 21, '广东']
'我是{0[0]},来自{0[2]},年龄{0[1]}'.format(a_list)
# 我是大佬,来自中国,年龄21
# 通过映射 dict 要加两个星号
b_dict = {'名字': '大佬', '年龄': 21, '产地': '广东'}
'我是{名字},来自{产地},年龄{年龄}'.format(**b_dict)
# 我是大佬,来自中国,年龄21
# 填充与对齐
'{:>8}'.format('189') # 冒号+空白填充+右对齐+固定宽度8
# 189
'{:0>8}'.format('189')
# 00000189
'{:a>8}'.format('189')
# aaaaa189
# 精度与类型f
'{:.2f}'.format(321.33345) # 保留2位小数,
# 321.33
# 用来做金额的千位分隔符
'{:,} RMB'.format(1234567890)
# 1,234,567,890 RMB
# 其他类型 主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制
'{:b}'.format(18) # 二进制 10010
'{:d}'.format(18) # 十进制 18
'{:o}'.format(18) # 八进制 22
'{:x}'.format(18) # 十六进制12