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函数从功能上更直接一些。
新闻热点
疑难解答