在Python中,函数 str.format() 用来格式化字符串(它是自 Python2.6 开始新增函数),它增强了字符串格式化的功能。
通过help函数,我们可以查看format函数的具体用法:>>> help(str.format)
Help on method_descriptor:
format(...)
S.format(*args, **kwargs) -> str
Return a formatted version of S, using substitutions from args and kwargs.
The substitutions are identified by braces ('{' and '}').
>>>
一、参数设置
format 函数基本语法是通过花括号 {} 来进行参数的替换 。format 函数可以接受不限个参数,位置可以不按顺序。以下介绍几种设置参数的方式:
1.1 通过位置设置参数>>> '{} {}'.format('hello','world') # 不设置指定位置,按默认顺序
'hello world'
>>>
>>> '{0} {1}'.format('hello','world') # 设置指定位置
'hello world'
>>>
>>> '{1} {0} {1}'.format('hello','world') # 设置指定位置
'world hello world'
>>>
1.2 通过关键字设置参数>>> '姓名: {name},年龄:{age}'.format(name='neil',age=100)
'姓名: neil,年龄:100'
>>>
1.3 通过字典设置参数>>> info = {'name':'neil','age':100}
>>> '姓名: {name},年龄:{age}'.format(**info)
'姓名: neil,年龄:100'
>>>
1.4 通过列表(索引)设置参数>>> l = ['neil',100]
>>> '姓名: {0[0]},年龄:{0[1]}'.format(l)
'姓名: neil,年龄:100'
>>>
1.5 通过对象设置参数>>> class Person:
def __init__(self,name,age):
self.name = name
self.age = age
>>> p = Person('neil',100)
>>> '姓名: {0.name},年龄:{0.age}'.format(p)
'姓名: neil,年龄:100'
>>>
二、数字格式化
下表展示了 str.format() 格式化数字的多种方法:数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:+.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2d}05数字补零 (填充左边, 宽度为2)
5{:x<4d}5xxx数字补x (填充右边, 宽度为4)
10{:x<4d}10xx数字补x (填充右边, 宽度为4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记法
13{:>10d}13右对齐 (默认, 宽度为10)
13{:<10d}13左对齐 (宽度为10)
13{:^10d}13中间对齐 (宽度为10)
11'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)1011
11
13
b
0xb
0XB进制^,  分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+ 表示在正数前显示 +,负数前显示 -;  (空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
举例如下:>>> '{:.2f}'.format(3.1415926) # 保留小数点后两位
'3.14'
>>> '{:+.2f}'.format(3.1415926) # 带符号保留小数点后两位
'+3.14'
>>> '{:.0f}'.format(3.1415926) # 不带小数
'3'
>>> '{:0>4}'.format(5) # 数字补0 (填充左边, 宽度为4)
'0005'
>>> '{:0<4}'.format(5) # 数字补0 (填充右边, 宽度为4)
'5000'
>>> '{:,}'.format(12345) # 以逗号分隔的数字格式
'12,345'
>>> '{:b}'.format(10) # 二进制格式化数字
'1010'
>>>
此外我们可以使用大括号 {} 来转义大括号,如下实例:>>> '{} 对应的位置是: {{0}}'.format('hello')
'hello 对应的位置是: {0}'
>>>