【超详细】Python字符串格式化输出的最全介绍

​字符串的格式化

格式化是对字符串进行一定的格式显示或输出的方式

在Python中有着丰富的格式化方式,可以很方便的输出任何你想要的文本样式。比如 format() 方法、 % 形式等,还可以设置输出长度、左右内容、是否居中等,下面就一一介绍下。

如下示例直接从IDLE中测试、或命令行进入Python均可。

format () 方法格式化

Python中,字符串的 format() 方法可以实现内容的格式化,字符串中使用以0开始的占位符,它会用传入的参数依次替换字符串内对应的占位符 {0} {1} ...

占位符中使用数字指定对应format参数中的第几个参数;不使用数字时则第几个占位符对应第几个format参数。

如下,字符串中第一个占位符保持原样输出,第二个占位符保留两位小数:

 >>> '今年{}使用率提高了{:.2f}%'.format('Python', 7.125) '今年Python使用率提高了7.12%' >>> '今年{}使用率提高了{:.2f}%'.format('Python', 7.126) '今年Python使用率提高了7.13%' >>> '今年{0}使用率提高了{1:.2f}%,{0}很受欢迎'.format('Python', 7.125) '今年Python使用率提高了7.12%,Python很受欢迎' 复制代码
 
占位符 {} 也被称为槽。

关于浮点数舍入的规则: 由上面还可以看出,Python中保留小数位数时,并不是四舍五入,也不是大多数编程软件使用的“银行家舍入” —— 四舍六入五取偶(4舍6入5凑偶,四舍六入五成双)。
查看如下示例,这个舍入很有些难理解:


格式化时浮点数舍入的规则是和 round(number[, ndigits]) 函数的舍入规则一样的:


具体规则,可参考官方文档: docs.python.org/zh-cn/3/lib…


python中要想精确的计算或舍入,推荐使用decimal模块(库)。

format 中的格式控制参数

在槽中,可以通过指定 : 实现一些对格式输出的控制。

控制格式的详细设置为: :<填充><对齐><宽度><,><.精度><类型>

  • : —— 引导符号。表示后面是格式控制
  • <填充> —— 用于填充的单个字符,默认为空格。会在槽对应的原字符串的基础上填充该字符。
  • <对齐> —— < 表示 左对齐; > 表示 右对齐; ^ ——表示 居中对齐。默认为左对齐。
  • <宽度> —— 槽设定的输出宽度。即该槽的位置输出的字符的宽度,如果宽度不够,则使用 <填充> 字符补满。
  • <,> —— 数字的千位分隔符,用于多余三位长度的数字时的千位分割。
  • <.精度> —— 浮点数小数精度或字符串最大输出长度。
  • <类型> —— 整数类型:b, c, d, o, x, X 分别对应 二进制、字符[Unicode编码的字符]、十进制、8进制、16进制、大写16进制; 浮点数类型:e, E, f, % 分别对应 小写e科学计数法、大写E科学计数法、浮点数、百分比(会自动显示该小数除以100后的百分比值)。

如下,格式化使用 = 填充,参数字符串居中,总长度为20的字符串:

 >>> "{0:=^20}".format("PYTHON")  # 输出字符串格式为用=填充且居中总长度为20 '=======PYTHON=======' 复制代码
 

格式化使用 * 填充,参数字符串右对齐,总长度为20的字符串:

 >>> "{0:*>20}".format("BIT")    # 输出长度为20字符右对齐其他位置*填充 '*****************BIT' 复制代码
 

格式化使用默认 填充,参数字符串左对齐,总长度为10的字符串:

 >>> "{:10}".format("BIT")       # 默认输出长度为10时左对齐填充空格 'BIT       ' 复制代码
 

格式化使用千位分隔符为 , ,保留3位小数:

 >>> "{0:,.3f}".format(12345.6789)   # 千分位,分割,保留3位小数 '12,345.679' 复制代码
 

字符串最长输出三位:

 >>> "{0:.3}".format("abcdef")       # 输出字符串最长三位 'abc' 复制代码
 

输出一个整数的二进制、对应字符、十进制、8进制、16进制、大写16进制形式:

 >>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(125)   # 输出125的二进制、字符、十进制、8进制、16进制、大写16进制表示 '1111101,},125,175,7d,7D' 复制代码
 

输出一个浮点数的科学计数法、浮点数、百分比:

 >>> "{0:e},{0:E},{0:f},{0:%}".format(3.14)  # 输出3.14的小写e科学计数法、大写E科学计数法、浮点数、百分比格式 '3.140000e+00,3.140000E+00,3.140000,314.000000%' 复制代码