【超详细】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%' 复制代码