文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
0. 测试环境
Python 3.6.9
1. 引言
Python中格式化字符串的方式有,一种是用%
操作符来进行字符串格式化,一种是使用str.format()
来进行字符串格式化,本文主要介绍str.format()
方式,这种方式更主流,也是官方推荐的方式,%
的方式后面会逐渐淘汰。
2. 格式化字符串
2.1 基本语法
格式化字符串包含用大括号{}
括起来的“替换字段”,。大括号中不包含的内容被视为正常文本,会原样输出。注意:如果要在文本中输出大括号,需要使用来转义,不是使用场景的转义字符
\
。示例如下:
1 | 'This is a format {}.'.format('test') |
下面是“替换字段”的语法,后面的示例中会具体讲到:
1 | replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}" |
2.2 位置参数标识符
格式化字符串中,默认情况下{}
中可以不加位置标识符,即'{} {}'.format(a, b)
与'{0} {1}'.format(a, b)
是等价的,但如果位置标识符在字符串中不是按参数顺序出现的,则需要显示的指明位置标识符。示例代码如下:
1 | '{0} {1}'.format('one', 'two') |
2.3 设置参数
格式化字符串中可以使用变量、字典、列表索引、类的属性等来设置参数。示例代码如下:
1 | print('Name: {name}, URL: {url}'.format(name='Tyan', url='http://noahsnail.com')) |
2.3 转换标志(conversion)
转换标志以!
开始,主要有三种!s
、!r
、!a
,分别会调用参数对象的__str__
,__repr__
,__ascii__
方法。
1 | class Test(object): |
2.4 格式化说明(format_spec)
格式化说明包含了值表示的说明,包括字段宽度、对其方式、填充、小数准确率等,其以:
开头。标准格式化说明符的一般形式为:
1 | format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type] |
<
表示输出结果左对齐,>
是右对齐,^
是居中对其,=
表示填充值在符号之后数字之前,例如+00001234
。+
表示正负数字都要带符号,-
表示只有负数需要带负号,- 数字表示。
b
表示二进制格式,c
表示将整数转换为字符,d
表示十进制整数,o
表示八进制格式,x,X
表示十六进制格式,x
大于9的字母为小写,X
大于9的字母为大写。默认为d
。 - 其它说明符的具体解释可参考文档[1]。
示例及结果如下:
1 | print('{:<8}'.format('1234')) |