本站在前面两篇文章中分别介绍了Python中format()函数格式化字符串的基本用法以及format()函数格式化数字字符串的相关知识。这篇文章将进一步接招format()函数有关设置宽度、填充与字符串对齐方式的有关内容。
format()函数使用的相关文章:
(1)Python中使用format()函数格式化字符串
(2)Python中使用format()函数对数字进行格式化
(3)Python中format()函数中的对齐与宽度问题
format()函数可以指定字符串的输出宽度,其语法格式如下:
"{:width}".format(args)
下面举几个例子说明(格式字符串中的竖线“|”用于标记字符串结束的位置):
#format()函数字符串宽度设置
print("{:6}|".format("我爱中国"))
print("{:10}|".format("我爱中国"))
print("{:2}|".format("我爱中国"))
输出结果如下:
我爱中国 |
我爱中国 |
我爱中国|
在Python 3.8.2中的代码及运行结果如下图所示:
从上面的输出结果可以看出,对于超出字符串长度的宽度设置值,格式化的结果将会在后面补充空格以达到指定的宽度;对于设置的宽度值小于字符串长度时,输出宽度默认为字符串的长度(换句话说,设置的值不会对格式化结果起到任何作用。)
同时要注意,设置的宽度值必须是一个大于0的整数,即,小于等于0的值是无效的值,否则将引发ValueError错误。
Python中的format()函数宽度设置也可以使用在数字格式化中。
下面举几个例子用于说明宽度设置在数字中使用的情形(格式字符串中的竖线“|”用于标记数字的起始位置):
#宽度也适用于数字格式
print("|{:5}|".format(123))
print("|{:6}|".format(123.34))
print("|{:3}|".format(123.34))
输出结果如下:
| 123|
|123.34|
|123.34|
在Python 3.8.2 中的运行情况如下图所示:
从上面的输出结果可以看出,Python format()函数在对输出数字格式宽度时,如果给定的宽度值大于数字宽度(包括小数点),则在前面补空格,补的空格数量为指定的宽度值-数字宽度;如果指定的宽度值小于或等于数字的宽度,则原样输出数字,即设置的宽度值将不会起作用。
在Python字符串函数中,format()函数可以使用特定的指示符指定输出内容的对齐方式。
Python中对齐选项的指示符包括以下几种。
类型 | 含义 |
---|---|
'<' | 强制输出内容在可用空间内靠左侧对齐(大多数对象的默认情形) |
'>' | 强制输出内容在可用空间内靠右侧对齐(数字的默认情形)。 |
'=' | 强制将填充放置在符号之后(如果有的话)数字之前。这个选项用于类似' +000000120 '这样的输出内容。此对齐选项仅对数字类型有效。当' 0 '紧接在字段宽度之前时,它成为默认值。。 |
'^' | 强制将输出内容在可用空间内中间对齐。 |
一般,对齐方式与宽度设置选项一起使用才有意义,否则格式化后的字符串只能默认靠左输出。
下面举例子说明具体使用方法(格式字符串中的竖线“|”用于指定宽度的起止位置):
#format()设置对齐方式
#未使用宽度设置选项时
print("未使用宽度选项时的效果:")
print("|{:>}|".format("欢迎关注本站公众号:优雅的代码"))
print("|{:<}|".format("欢迎关注本站公众号:优雅的代码"))
print("|{:^}|".format("欢迎关注本站公众号:优雅的代码"))
#使用宽度设置选项时
print("使用宽度选项时的效果:")
print("|{:>20}|".format("欢迎关注本站公众号:优雅的代码"))
print("|{:<20}|".format("欢迎关注本站公众号:优雅的代码"))
print("|{:^20}|".format("欢迎关注本站公众号:优雅的代码"))
输出结果如下:
未使用宽度选项时的效果:
|欢迎关注本站公众号:优雅的代码|
|欢迎关注本站公众号:优雅的代码|
|欢迎关注本站公众号:优雅的代码|
使用宽度选项时的效果:
| 欢迎关注本站公众号:优雅的代码|
|欢迎关注本站公众号:优雅的代码 |
| 欢迎关注本站公众号:优雅的代码 |
在Python 3.8.2 中的输出结果如下图所示:
从上面的输出结果可以看出,在未指定宽度时,三个选项输出的形式是一样的。
在指定宽度后,由于字符串长度为15,">"选项在可用空间20下,内容靠右侧对齐,前面补5个空格;"<"选项使输出字符串靠左对齐,右侧补5个空格;"^"选项使输出字符串中间对齐,余量为奇数5,则前端补2个空格,后端补3个空格。
该类选项也可以使用于数字中,如下面的例子:
#数字的对齐
print("|{:>10}|".format(1234.56))
print("|{:<10}|".format(1234.56))
print("|{:^10}|".format(1234.56))
print("|{:=+10}|".format(1234.56))
print("|{:=10}|".format(-1234.56))
输出结果如下:
| 1234.56|
|1234.56 |
| 1234.56 |
|+ 1234.56|
|- 1234.56|
从输出结果可以看出,前三个与字符串相同,“=”选项设置使空格填充在正负号和数字之间。
在指定宽度选项时,format()函数允许用户指定宽度余量要填充的字符。在上面的例子中,我们可以看到Python默认使用空格进行填充,我们也可以指定其它任意单个字符来填充余量。
下面举例说明:
#format()填充字符
print("{:#<30}".format("欢迎关注优雅的代码公众号"))
print("{:~>30}".format("欢迎关注优雅的代码公众号"))
print("{:*^30}".format("欢迎关注优雅的代码公众号"))
print("{:0<15}".format(1234.56))
print("{:0>15}".format(1234.56))
print("{:0^15}".format(1234.56))
print("{:0^+15}".format(1234.56))
print("{:0=+15}".format(1234.56))
print("{:0=+15}".format(-1234.56))
输出结果如下:
欢迎关注优雅的代码公众号##################
~~~~~~~~~~~~~~~~~~欢迎关注优雅的代码公众号
*********欢迎关注优雅的代码公众号*********
1234.5600000000
000000001234.56
00001234.560000
000+1234.560000
+00000001234.56
-00000001234.56
上面的例子和输出结果有力的说明了填充字符的使用方法。其中,后6个演示了填充字符选项在数字中的使用情形,要注意到在使用“=”选项时,其字符填充在了正负号和数字之间了。
在format()字符串格式化中,宽度(width)、填充字符(fill)、对齐方式(align)等的语法规范如下:
[[fill]align][sign][width]
中括号表示可选项,语法给出了三者之间的关系:在给定对齐方式(<,>,=,^)时,才能指定填充字符(填充字符可以为任意字符),sign表示符号(正负号,见 Python中使用format函数对数字进行格式化),width表示输出宽度。
从语法中可以看出,如果三者同时出现的话,其顺序应该是:填充字符,对齐方式,宽度
新闻热点
疑难解答