Python 字符串格式化输出
Python 字符串格式化输出使用format( )拼接字符串
format()方法是字符串变量的内置方法,通过它可以实现字符串的优雅拼接,同时还支持格式化字符串,例如保留一位小数,对齐等,下边我们一起一探究竟。
例如:两个数求和,输出结果。之前我们可能是这样:
>>> a = 2 >>> b = 3 >>> result = a + b >>> info = "a + b = " + str(result) >>> print(info) a + b = 5
使用format()方法只需要这样:
>>> a = 2
>>> b = 3
>>> result = a + b
>>> print('a + b = {}'.format(result))
a + b = 5当然还可以更精简,不过我们以演示用法为主,细心的小伙伴肯定发现这里多出来一个{},这是什么?有什么用呢?
{ }占位符
占位符,顾名思义就是“占着位置的符号”,在Python中,使用{}来表示。占位符的作用就是:这儿有东西,但是还没想好是啥,先放个东西占着,等有了再换过来。 类似于咱们排队站累了,放个啥占着。
默认占位符按参数顺序占位
下面我们把上边的程序升级一下:
>>> a = 2
>>> b = 3
>>> result = a + b
>>> print('{} + {} = {}'.format(a, b, result))
2 + 3 = 5诶?怎么回事?这三个{}怎么依次填正确的?其实是是按 foramt()中的顺序依次填入的{}的。

同理,如果你给他们换位置,那么结果就错了:
>>> print('{} + {} = {}'.format(result, a, b))
5 + 2 = 3欸?那我要是写一大段,怎么能记得住第几个写的是什么?怎么办?那就需要用到参数名占位符了。
参数名占位符
参数名占位符是根据参数名称来对应的,比如:
>>> a = 2
>>> b = 3
>>> result = a + b
>>> print('{p1} + {p2} = {p3}'.format(p3=result, p1=a, p2=b))
2 + 3 = 5这里分别指定了占位的参数名称p1、p2、p3,然后在format()中分别为他们赋值了a、b、result,这样输出的结果就与format中的顺序无关了。
格式化输出
在数据统计、报表制作的时候,有时候遇到很长的数,需要指定显示的长度,这时候就可以使用格式化输出的方式。比如现在有一个数字3.1415926%,报表都统一保留两位小数,使用format()格式化输出如下:
>>> p = 0.031415926
>>> print('{0:0.2f}%'.format(p*100))
3.14%
>>> print('{:.2f}%'.format(p*100))
3.14%
>>> print('{res:0.2f}%'.format(res=p*100))
3.14%f是格式化控制符,完整的写法应该是{0:0.2f},语法为:{参数序号:格式控制符}或{参数名:格式控制符}。

第一个0:这表示索引,指的是要格式化的参数在传入的参数序列中的位置。在这个例子中,0表示第一个参数。
0.2f:这是一个格式说明符,它指定了浮点数的格式化方式。
•
0:表示在数字的左边填充0直到总宽度为指定的宽度(如果宽度没有指定,则不填充)。•
.2:表示小数点后保留两位数字。•
f:表示这是一个浮点数。
第三个f:这是格式类型指示符,表示格式化的类型是浮点数(float)。
| 格式类型指示符 | 释义 |
| s | 字符串 |
| d | 十进制整数 |
| f/F | 十进制浮点数 |
| g/G | 十进制整数或浮点数 |
| o | 八进制整数 |
| x/X | 十六进制整数 |
>>> num = 255
>>> print("{:d}".format(num))
255
>>> print("{:f}".format(3.1415926))
3.141593
>>> print("{:g}".format(3.1415926))
3.14159
>>> print("{:o}".format(num))
377
>>> print("{:x}".format(num))
ff
>>> print("{:X}".format(num))
FF格式化输出——填充宽度
在Python的字符串格式化中,填充宽度是一个可选的参数,它指定了输出的最小字符数。如果格式化后的字符串长度小于这个宽度,它会用指定的填充字符来填充剩余的空间,直到达到指定的宽度。
使用默认的空格填充:
>>> print("{:10d}".format(123))
' 123' # 数字123后面填充了7个空格指定填充字符:
在格式说明符中,在宽度和类型之间加入一个填充字符,例如,使用
0作为填充字符:
>>> print("{:010d}".format(123))
'0000000123' # 数字123前面填充了7个0指定对齐方式:
右对齐的例子:
>>> print("{:>10s}".format("hello"))
' hello' # 字符串hello左侧填充了4个空格居中对齐的例子:
>>> print("{:^10s}".format("hello"))
' hello ' # 字符串hello两侧各填充了3个空格•
<:左对齐(默认),填充字符填充右侧。•
>:右对齐,填充字符填充左侧。•
^:居中对齐,填充字符填充两侧。
使用负号指定宽度:
如果在宽度前加一个负号,它将自动选择右对齐,并且忽略填充字符的指定(如果指定了的话):
>>> print("{:-10s}".format("hello"))
'hello ' # 字符串hello右侧填充了5个空格