第一眼看到百分号(%)时,你可能会想到运算符中的取模操作。在字符串操作中,百分号(%)还有一个更大的用途,就是字符串的格式化。百分号(%)是Python中最经典的字符串格式化符号,也是Python中最古老的字符串格式化符号,这是Python格式化的OG(original generation),伴随着Python语言的诞生。
百分号(%)格式化字符串的示例如下:
由输出结果可以看到,在有多个占位符的字符串中,可以通过元组传入多个待格式化的值。
从Python 2.6开始,引入了另外一种字符串格式化的方式,形式为str.format()。str.format()是对百分号(%)格式化的改进。使用str.format()时,替换字段部分使用花括号表示。在交互模式下输入:
由输出结果可以看到,str.format()的使用形式为:用一个点号连接字符串和格式化值,多于一个的格式化值需要用元组表示。在字符串中,带格式化的占位符用花括号({})表示。
花括号中可以没有任何内容,没有任何内容时若有多个占位符,则元组中元素的个数需要和占位符的个数一致。
花括号中可以使用数字,数字指的是元组中元素的索引下标,字符串中花括号中的索引下标不能超过元组中最大的索引下标,元组中的元素值可以不全部使用。例如:
>>> print('{0}年的冬奥会将在{2}举行'.format('2022',5,'beijing','sh')) 2022年的冬奥会将在beijing举行
花括号中可以使用变量名,在元组中对变量名赋值。花括号中的所有变量名在元组中必须要有对应的变量定义并被赋值。元组中定义的变量可以不出现在字符串的花括号中,如下面的示例所示:
从Python 3.6开始,引入了一种新的字符串格式化字符:_f-strings_。
使用f字符串做格式化可以节省很多时间,使格式化更容易。f字符串格式化也称为“格式化字符串文字”,因为f字符串格式化是开头有一个f的字符串文字,即使用f格式化字符串时需在字符串前加一个f前缀。
f字符串格式化包含了由花括号括起来的替换字段。替换字段是表达式,它们会在运行时计算,然后使用format()协议进行格式化。
_f-strings_使用方式如下:
在Python中,使用百分号(%)、str.format()形式格式化的字符串都可以使用f字符串格式化实现。
f-string(或者称为“格式化字符串”)虽然非常方便,但是对调试没有什么帮助。后来Eric V. Smith为f-string添加了一些语法结构,使其能够用于调试。
在Python 3.6中,f-string这样使用:
从Python 3.8开始,可以使用如下方式(更加简洁):
f字符串格式可以更方便地在同一个表达式内进行输出文本和值或变量的计算,而且效率更高。
在Python 3.6中,f-string这样使用:
>>> x=5 >>> print(f'{x+1}') 6
在Python 3.8中,可以输出表达式及计算结果,操作如下:
>>> x=5 >>> print(f'{x+1=}') x+1=6
对于小数,若需要输出指定位数,则可进行如下操作:
注意,对于小数的输出,:.3中的3是指输出的总位数,而不是指小数位数。