zfill()函數是Python字符串處理的內置函數之一,其作用是在字符串前端補ASCII編碼的 '0' 以使字符串達到指定的寬度,并返回處理后的字符串。如果字符串前端有前綴符號(“+”或“-”),則'0'會填補到符號和字符串之間。如果指定的寬度小于或等于字符串的長度,則該函數會返回原字符串。
官方文檔中給出的該函數的語法格式如下:
str.zfill(width)
str 是待處理的字符串。
該函數有一個參數 width ,其用于指定處理后的字符串寬度(長度)。
該函數的返回值是處理后的字符串。
str1 = "優雅的代碼公眾號"
newstr = str1.zfill(10)
print("width=10:",newstr)
print("width=8:",str1.zfill(8))
print("width=5:",str1.zfill(5))
print("width=0:",str1.zfill(0))
print("width=-3:",str1.zfill(-3))
輸出結果如下:
width=10: 00優雅的代碼公眾號
width=8: 優雅的代碼公眾號
width=5: 優雅的代碼公眾號
width=0: 優雅的代碼公眾號
width=-3: 優雅的代碼公眾號
上面的例子演示了zfill函數使用的方法,并設置 width 參數值分別大于字符串長度(字符串長度為8)、等于字符串長度、參數 width 為0和負數的情形。通過輸出結果可以看出:
當設置的 width 的值大于字符串長度時,返回的字符串在前面補 '0' 以使新字符串達到 width 指定的值;
當設置的 width 的值等于或小于字符串長度時,返回原字符串的內容。
print("+123.4".zfill(10))
print("-123.4".zfill(10))
print("++123.4".zfill(10))
print("--123.4".zfill(10))
print("+-123.4".zfill(10))
print("-+123.4".zfill(10))
輸出結果如下:
+0000123.4
-0000123.4
+000+123.4
-000-123.4
+000-123.4
-000+123.4
從上面的例子可以看出,當字符串前端有正負號時("+","-"),zfill函數會在正負號和字符串之間補 '0' ,而且當有多個連續的正負號時,只在第一個符號及其它內容之間補 '0' 。
在Python中除了zfill專門用于在字符串前端補字符'0'之外,rjust()函數也可以達到同樣的目的。
下面給出例子對比一下兩個函數的處理效果:
str2 = "請關注【優雅的代碼】公眾號"
print(str2.zfill(20))
print(str2.rjust(20,'0'))
str3 = "-123.4"
print(str3.zfill(8))
print(str3.rjust(8,'0'))
輸出結果如下:
0000000請關注【優雅的代碼】公眾號
0000000請關注【優雅的代碼】公眾號
-00123.4
00-123.4
從輸出結果可以看出,rjust()函數同樣也可以實現在字符串左端補'0'的功能,只不過rjust函數在給出寬度的同時還需要指出需要填補的字符。另外,我們還注意到,在含正負號的字符串里,兩者的輸出效果是不同的,請自行觀察。
除了rjust函數之外,我們還可以使用format()函數來實現與zfill同樣的目的。
str2 = "請關注【優雅的代碼】公眾號"
print(str2.zfill(20))
print("{:0>20}".format(str2))
print("-123.4".zfill(8))
print("{:0>8}".format("-123.4"))
print("{:0=+8}".format(-123.4))
print("{:0=+8}".format(+123.4))
輸出結果如下:
0000000請關注【優雅的代碼】公眾號
0000000請關注【優雅的代碼】公眾號
-00123.4
00-123.4
-00123.4
+00123.4
從例子和輸出結果可以看出,使用format()函數的格式化字符串同樣能達到zfill函數的處理效果,同樣作為數字字符串時,format()函數會默認在符號前直接補指定的字符,除非直接按數值來處理,并指定“+”號格式符時才會實現與zfill()函數同樣的處理效果。
不過,zfill函數從功能上更直接一些。
新聞熱點
疑難解答