语法

它通过**{}:来代替%**

“映射”示例

  • 通过位置
1
2
3
4
5
6
7
8
>>> '{}{}'.format('123','abc')
'123abc'
>>> '{1},{0}'.format('123','abc')
'abc,123'
>>> '{1},{0}:{1}'.format('123','abc')
'abc,123:abc'
>>> '{1},{0}:{{}}'.format('123','abc')
'abc,123:{}'

字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用也可以使用多次,大括号可以写两遍来转义。

  • 通过关键字参数
1
2
>>> '{name}|{age}'.format(age=18,name="abc")
'abc|18'
  • 通过对象属性
1
2
3
4
5
6
7
#class Car:  
# def __init__(self,color,price):
# self.color, self.price = color, price
# def __str__(self):
# return 'This car is {self.color} and worth ${self.price}'.format(self=self)
>>> str(Car('blue',200))
>>> 'This car is blue and worth $200'
  • 通过下标
1
2
3
>>> car=['blue',200]
>>> '{0[0]},{0[1]}'.format(car)
>>> 'blue,200'

格式限定符

它有着丰富的的“格式限定符”(语法是{}中带:号),比如:

  • 填充与对齐

填充常跟对齐一起使用
^<>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

1
2
3
4
5
6
>>> '{:>8}'.format('189')
>>> ' 189'
>>> '{:0>8}'.format('189')
>>> '00000189'
>>> '{:a>8}'.format('189')
>>> 'aaaaa189'
  • 精度与类型f

精度常跟类型f一起使用

1
2
>>> '{:.2f}'.format(321.33345)
>>> '321.33'

其中.2表示长度为2的精度,f表示float类型。

  • 多进制表示

b、d、o、x分别是二进制、十进制、八进制、十六进制。

1
2
3
4
5
6
7
8
>>> '{:b}'.format(17)
>>> '10001'
>>> '{:d}'.format(17)
>>> '17'
>>> '{:o}'.format(17)
>>> '21'
>>> '{:x}'.format(17)
>>> '11'
  • 其他类型
    千位分隔符
    用,号还能用来做金额的千位分隔符。
1
2
>>> '{:,}'.format(1234567890)
>>> '1,234,567,890'

‘c’ - 字符。在打印之前将整数转换成对应的Unicode字符串
‘e’ - 幂符号。用科学计数法打印数字。用’e’表示幂
‘g’ - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印
‘n’ - 数字。当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符。
‘%’ - 百分数。将数值乘以100然后以fixed-point(‘f’)格式打印,值后面会有一个百分号。