将字符串中的一部分替换为具备某种格式的变量,称为字符串的格式化。
1. 使用%占位符
>>>age = 23
>>>name = 'tom'
>>>'Happy birthday %d, %s!'%(age, name)
占位符 | 含义 |
%c | 单个字符,或将表示字符的Unicode转换为字符替换进来 |
%s | 字符串 |
%d | 整数 |
%u | 无符号整数 |
%o | 八进制数 |
%x | 十六进制数 |
%X | 字母大写的十六进制数 |
%f | 浮点数 |
%e | 科学计数法表示的浮点数 |
%E | 使用大写的E表示的科学计数法浮点数 |
%g | 综合的%e和%f,系统决定是否使用科学计数法 |
%G | 大写表示的%g |
在%和占位字符之间,可以加入数字和其他符号来表示更详细的格式控制。
其中,数字表示要预留多少字符的位置给这个数值,小数点加数字表示小数的位数。(如果实际长度不足,会在左边用空格填充,如果实际长度超出,则不会进行裁剪而直接输出。这里控制格式的数字必须是整数,或者使用’*’表示格式控制数字由后面的参数提供。)
>>>'%3d'%11
' 11'
>>>'%.2f'%(1/3)
'0.33'
>>>'%.*f'%(3, 3.14159)
'3.142'
%和占位字符之间,还可以表示4种内容。’-’表示向左对齐即在后面而不是前面填充空位,’0’表示用0填充而不是空格,’+’表示正数也要’+’表示符号,' '空格表示在正数前不用’+’表示符号,而是用空格,用来和负数对齐。
>>>'%-3d'%11
'11 '
>>>'%03d'%11
'011'
>>>'%+3d'%11
'+11'
>>>'% 3d'%11
' 11'
2. format()方法
和字符串的格式化格式不同,format函数使用{}表示占位符, 一般格式为:
{<索引>:<填充字符><对齐方式><宽度.精度><格式>}
>>>'A{}, B{}'.format('a', 'b')
'Aa Bb'
>>>'索引示例: A{1}, B{0}'.format('b', 'a')
'索引示例: Aa, Bb'
>>>'*填充,右对齐: {0:*>3d}'.format(11)
'*填充,右对齐: *11'
>>>'*填充,左对齐: {0:*<3d}'.format(11)
'*填充,左对齐: 11*'
3. f'str'
可以使用在字符串前加f的方式表示格式化字符串,从而可以在字符串内部直接使用{变量}的形式来进行格式化操作。
>>>age = 23
>>>name = 'tom'
>>>f'Happy birthday {age}, {name}!'
'Happy birthday 23, tom!'