本站在前面兩篇文章中分別介紹了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表示輸出寬度。
從語法中可以看出,如果三者同時出現的話,其順序應該是:填充字符,對齊方式,寬度
新聞熱點
疑難解答