摘要
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。