python三种字符串格式化
字符串格式化
1 %
字符串格式化
语法格式如下:
%[(name)][flags][width][.precision]typecode
(name)
可选,用于选择指定的key
flags
可选,可供选择的值有,注意只有在和数值类型的typecode
配合才起作用+
, 右对齐,正数前加正号,负数前加负号-
, 左对齐,正数前无符号,负数前加负号空格
, 右对齐,正数前加空格,负数前加负号0
, 右对齐,正数前无符号,复数前加负号;用0
填充空白处
width
,可选字符串输出宽度.precision
可选,小数点后保留位数,注意只有在和数值类型的typecode
配合才起作用typecode
必选- %,当字符串中存在格式化标志时,需要用 %% 表示一个百分号
# '%s'作为槽位和 % 号后提供的值按顺序一一对应 # 百分号用%号转义下 res = '%s计算机的内存利用率为%s%%' % ('11:15', 75) print(res) # % 后是字典时,可以通过name指定key对应的值 res = '%(time)s计算机的内存利用率为%(percent)s%%' % {'time':'11:15', 'percent': 75} print(res) # 输出两位数的月份,例如01,02 res = '%02d' % 8 print(res) 08 # 保留2为小数 res = '%(time)s计算机的内存利用率为%(percent).2f%%' % {'time':'11:15', 'percent': 75.123} print(res) 11:15 计算机的内存利用率为 75.12%
2 format
函数格式化
基本语法是:
<模板字符串>.format(<逗号分隔的参数>)
在模板字符串中使用 {}
代替以前的 %
作为槽位
'{}计算机的内存利用率为{}%'.format('11:15', 75)
当 format 中的参数使用位置参数提供时,{}
中可以填写参数的整数索引和参数一一对应
'{0}计算机的内存利用率为{1}%'.format('11:15', 75)
当 format 中的参数使用关键字参数提供时,{}中可以填写参数名和参数一一对应
'{time}计算机的内存利用率为{percent}%'.format(time='11:15', percent=75)
{<参数序号>:<格式控制标记>}
其中格式控制标记格式如下
[fill][align][sign][#][0][width][,][.precision][type]
- fill 【可选】空白处填充的字符
- align 【可选】对齐方式(需配合 width 使用)
-
- <,内容左对齐
- >,内容右对齐(默认)
- =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号 + 填充物 + 数字
- ^,内容居中
- sign 【可选】有无符号数字
- +,正号加正,负号加负;
- -,正号不变,负号加负;
- 空格 ,正号空格,负号加负;
- #
【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
- , 【可选】为数字添加分隔符,如:1,000,000
- width 【可选】格式化位所占宽度
- .precision 【可选】小数位保留精度
# 输出两位数的月份,例如01,02 res = '{:0>2}'.format(8) print(res) 08 # 保留2为小数 res = '{time}计算机的内存利用率为{percent:.2%}'.format(time='11:15', percent=0.75123) print(res) 11:15 计算机的内存利用率为 75.12%
3 f 字符串的花括号内写上变量名,解释器会自动将变量的值的字符串形式替换
基本语法是:
literal_char{expression[:format_spec]}
literal_char
普通字符expression
表达式,变量或函数。。format_spec
格式字符串,规则同上面的 format 字符串
直接在 f 字符串的花括号内写上变量名,解释器会自动将变量的值的字符串形式替换
item = '11:15' percent = 75 f'{time}计算机的内存利用率为{percent}%' '11:15计算机的内存利用率为75%'
# 输出两位数的月份,例如01,02 month = 8 res = f'{month:0>2}' print(res) 08 # 保留2为小数 time = '11:15' percent = 0.75123 res = f'{time}计算机的内存利用率为{percent:.2%}' print(res) 11:15计算机的内存利用率为75.12% 包含运算和函数的 f 字符串 num = -1 print(f'{num+1=}') num+1=0