首页 > 开发 > Python > 正文

Python zfill()函数

2023-04-24 19:21:41
字体:
来源:转载
供稿:网友

zfill()函数是Python字符串处理的内置函数之一,其作用是在字符串前端补ASCII编码的 '0' 以使字符串达到指定的宽度,并返回处理后的字符串。如果字符串前端有前缀符号(“+”“-”),则'0'会填补到符号和字符串之间。如果指定的宽度小于或等于字符串的长度,则该函数会返回原字符串。

zfill()函数语法格式

官方文档中给出的该函数的语法格式如下:

str.zfill(width)

 str 是待处理的字符串。

参数

该函数有一个参数 width ,其用于指定处理后的字符串宽度(长度)。

返回值

该函数的返回值是处理后的字符串。

Python zfill()函数

zfill()函数示例

示例一

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函数从功能上更直接一些。

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