摘要
Python 3.0 之后,str的对象支持一个method,str.format()。它是针对原来str所支持的%operator一个优化。这里简单地记录一些用法和例子。
常见使用方法
使用
{}作为输出内容的占位符。1
2>>>'{} {}'.format('Hello','World')
'Hello World'添加key指定输出对应的参数。key为数字时是参数位置的索引,为字符串时是关键字的索引。
1
2>>>'{1} {0} {a}'.format('Hello','World', a='!')
'World Hello !'结合
*operator解析list,dict。1
2
3
4
5
6>>>lst = ['Hello', 'World']
>>>'{} {}'.format(*lst)
Hello World
>>>dct = {'a':'Hello', 'b':'World'}
>>>'{a} {b}'.format(**dct)
Hello WorldPy3.6后还可以用f-string的方式直接制定输出变量。
1
2
3>>>string = 'Hello World'
>>>f'{string}'
Hello World
输出格式
- 格式化输出的用法如下面例子。
:前的部分是上文提及的key,指定输出的内容。:后的.1和.3分别指以小数点后保留1位和3位的格式输出。 
1  | >>>num = 0.1313  | 
- 格式的一般形式如下:
 
[[fill]align][sign][#][0][minimumwidth][.precision][type]
- 如上文提及
[.precision]是指小数点后显示的位数。minimumwidth则是指输出的规定长度。 
1  | >>>f'{num:13}'  | 
[[fill]align]指定在内容长度小于规定长度时输出的位置和是否padding补全。align为<,^,>分别指居左,居中,居右。输出内容是字符串,默认居左。输出内容是数字,默认居右。align还有一种选择是=,指padding补全在符号后数字前。fill指定padding的字符,默认为空格。1
2
3
4
5
6>>>f'{num:0<13}'
'0.13130000000'
>>>f'{string:-^13}'
'-Hello World-'
>>>'{:0=13}'.format(-1) # fill:0 align:= minimumwidth:13
'-000000000001'[sign]指显示数字符号的格式。+表示正负数均带符号。-表示正数不带符号,负数带负号。空格表示正数保留一个空格,负数带负号。
1  | >>>'{:+} {:+}'.format(1, -1)  | 
- 参照
datetime模块可以实现日期按照指定格式输出。关于%a等指代意义可以参照datetime的官方文档。 
1  | >>>from datetime import datetime  | 
关于格式化其他参数的用法可以参照PEP 3101。