格式化输出有几种方式 ---------------------------- 常见的有三种方法来格式化字符串,分别为: * %格式化字符串, * 字符串方法format, * F字符串。 例如:: name="openwrt" print('book name is %s' % name) #% print('book name is {}'.format(name)) #format print(f'book name is {name}') #f字符串 首先我们来学习一下用百分号格式化输出。 %格式化字符串(printf风格) ''''''''''''''''''''''''''' "%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化。 他对字符串进行操作,然后返回一个字符串。以format % values 形式进行计算,format是 一个字符串,其中包含要输出的对象占位符和格式。格式的%转换规范被替换为零或更多的 值元素。 示例:: #格式化输出字符串,整型和浮点型 >>> print('book name is %s, price is %d, read %f' % ("openwrt", 69, 1/3) ) book name is openwrt, price is 69, read 0.333333 还可以控制输出的格式, 例如精度,占用的字符宽度等等 :: print('read %.2f’ % 1/3) #控制输出小数点后占两位 print('read %10d’ % 69) #控制输出宽度为10 print('%02d' % 5) #至少占用两个字符位置,不足前面补零 print('book name is %15s' % "openwrt") #控制宽度占15个字符位置 转换说明符包含两个或多个字符,并具有以下组件,必须以这个顺序出现: 1, “%”字符,标志着转换说明符的开始。 2, 映射键(可选),由一个括号的字符序列组成(例如,(somename))。 3, 转换标志(可选),它影响某些转换类型的结果。 4, 最小宽度(可选)。如果指定为'*'(星号),则实际的宽度将从值的元组的下一个 元素中读取,并且在最小字段宽度和可选精度之后转换。 5, 精度(可选),作为一个"."(点)接着是精度。如果指定为'*'(星号),则从值的 元组的下一个元素读取实际的精度,并在精度之后进行转换。 6, 长度修改器(可选)。 7, 转换类型。 常见的转换类型有:: ========= =================== 转换字符 含义 ========= =================== 'd' 整型数字 'i' 有符号整型数字 'o' 八进制数据 'x' 十六进制数据 'f' 浮点型数据 's' 字符串 ========= =================== 详细内容,请参考https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting printf风格的字符串输出已经不建议使用,请使用最新的 *f字符串* 来替代该功能。 字符串方法format '''''''''''''''''''''' format方法原型为:: str.format(*args, **kwargs) * args表示可以传递任意个位置参数,他根据位置来决定参数的含义及使用。 * kwargs表示关键字参数, 以key=value形式进行传递参数。 str.format()函数执行字符串格式化操作。该方法所调用的字符串可以包含文本或替换字段, 由括号{}分隔。每个替换字段包含一个位置参数的数值索引,或者一个关键字参数的名称。 它返回一个新的字符串的副本,其中每个替换字段替换为相应参数的字符串值。例如:: >>> name="beijing" >>> "hello {k1}".format(k1=name) 'hello beijing' >>> "hello {0}".format(name) 'hello beijing' 替换字段格式为"{" [field_name] ["!" conversion] [":" format_spec] "}" 包含三部分: * field_name开始,该字段指定要格式化的对象,并将其插入到输出中。 field_name是可选的。 * 后面是一个转换字段,前面是一个感叹号!。 * 最后有一个format_spec,前面是冒号':'。这些指定了替换值的非默认格式。 在括号里面,可以指定参数的格式化方式。他是用冒号“:”开始来指定格式化方式。 :: print('read {:.2f}'.format(1/3)) #控制输出小数点后占两位 read 0.33 print('read {:10d}'.format(69)) #控制输出宽度为10 print('{:<8}'.format(69)) #右对齐,占用8个字符宽度 print('read {:02d}'.format(5)) #至少占用两个字符位置,不足前面补零 print('book name is {:>15}'.format("openwrt")) #右侧对齐,控制字符串宽度占15个字符