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个空格