Python字符串格式化包括三个阶段:%操作符(<py2.6)、format函数(py2.6)以及f-string(py3.6)。
1. 三个例子
input_data = '0x20'
i = int(input_data, 16)
print('Convert %s to hex %03d' % (input_data, i)) # % 格式化
print('Convert {} to hex {:03d}'.format (input_data, i))# format 格式化
print(f'Convert {input_data} to hex {i:03d}') # f-string 格式化
Convert 0x20 to hex 032
Convert 0x20 to hex 032
Convert 0x20 to hex 032
2. 归纳总结
2.1 %操作符%操作符(py2.6之前)
使用格式:“ str1 占位符号(%格式控制) str2 ...” % ( value1, value2, ...)
,
前面是包含着格式控制占位符的字符串,然后用百分号%连接一个需要传递的多个值组成的元组。
格式控制:%[(name)][flags][width].[precision]typecode
-
(name) :可选,用于选择指定的key
-
flags:可选,可供选择的值有
- + :右对齐
- - :左对齐
- 空格 :在正数的左侧填充一个空格,从而与负数对齐
- 0:使用0填充
-
width:可选,占有宽度
-
.precision:可选,表示小数点后精度
-
typecode ,必选
%s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 %b 二进制整数 %d 十进制整数 %i 十进制整数 %o 八进制整数 %x 十六进制整数 %e 指数 (基底写为e) %E 指数 (基底写为E) %f 浮点数 %F 浮点数,与上相同 %g 指数(e)或浮点数 (根据显示长度) %G 指数(E)或浮点数 (根据显示长度)
2.2 format函数(py2.6)
str.format() 增强了字符串格式化的功能,基本语法是通过 {} 和 : 来代替以前的 %。
使用格式:“str1 {} {} str2”.format(value1, value2, ...)
格式控制:[[填充字符]对齐方式][符号标志][#][宽度][,][.精度][类型]
2.3 f-string(py3.6)
f-string就是以f''
开头的字符串,字符串内容和format方法中的格式一样,但是可以直接将变量带入到字符串中,可读性进一步增加。
使用格式:f'str1 {content:format} str2'
字符串格式:{content:format}
注意:虽然f-string
十分的便捷,但它并不能完全代替str.format
,比如 换行符(’\n‘
)在里面的使用就不太方便。
关于这部分可以继续参考:这有 73 个例子,彻底掌握 f-string 用法!——写的很不错!!
这里面水有还是很深的,不过要是能熟悉起来,那会是一大利器。
#3. 案例
用一个例子来说明Python 字符串格式化的演变:在Python3中打印出原始的十六进制字符串
(待更新)
更多参考: