首页 > 开发 > Python > 正文

Python中format()函数中的对齐与宽度问题

2023-04-25 12:32:02
字体:
来源:转载
供稿:网友

本站在前面两篇文章中分别介绍了Python中format()函数格式化字符串的基本用法以及format()函数格式化数字字符串的相关知识。这篇文章将进一步接招format()函数有关设置宽度、填充与字符串对齐方式的有关内容。

format()函数使用的相关文章:

(1)Python中使用format()函数格式化字符串

(2)Python中使用format()函数对数字进行格式化

(3)Python中format()函数中的对齐与宽度问题

Python format()函数格式化字符串的宽度、对齐方式和填充字符

1、format()函数的输出宽度设置

format()函数可以指定字符串的输出宽度,其语法格式如下:

"{:width}".format(args)

下面举几个例子说明(格式字符串中的竖线“|”用于标记字符串结束的位置):

#format()函数字符串宽度设置
print("{:6}|".format("我爱中国"))
print("{:10}|".format("我爱中国"))
print("{:2}|".format("我爱中国"))

输出结果如下:

我爱中国  |
我爱中国      |
我爱中国|

在Python 3.8.2中的代码及运行结果如下图所示:

format()函数宽度设置

从上面的输出结果可以看出,对于超出字符串长度的宽度设置值,格式化的结果将会在后面补充空格以达到指定的宽度;对于设置的宽度值小于字符串长度时,输出宽度默认为字符串的长度(换句话说,设置的值不会对格式化结果起到任何作用。)

同时要注意,设置的宽度值必须是一个大于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()函数在对输出数字格式宽度时,如果给定的宽度值大于数字宽度(包括小数点),则在前面补空格,补的空格数量为指定的宽度值-数字宽度如果指定的宽度值小于或等于数字的宽度,则原样输出数字,即设置的宽度值将不会起作用

2、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 中的输出结果如下图所示:

 Python中的format()函数设置对齐方式

从上面的输出结果可以看出,在未指定宽度时,三个选项输出的形式是一样的。

在指定宽度后,由于字符串长度为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|

从输出结果可以看出,前三个与字符串相同,“=”选项设置使空格填充在正负号和数字之间。

 3、format()函数对输出内容填充字符

在指定宽度选项时,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表示输出宽度。

从语法中可以看出,如果三者同时出现的话,其顺序应该是:填充字符,对齐方式,宽度

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表