python elif 用法_气象编程 | 如何用Python自动补零?

所谓自动补零,就是在数字或者字符串前面,通过数字0来填满空位,让它成为一个固定长度的字符串。 这个功能在我们处理日期的时候经常会用到,比如要在个位数的月份或者日期前面补0,形成20201212、20200906这种统一的格式。当然也会有人说,搞那么复杂干什么,直接把命名规则定位month+day就行了嘛!要用到哪天,直接调用就好,补什么零啊,折腾! 那么问题来了,就以2020112为例,这一天到底是2020年1月12日,还是11月2日呢? 所以,还是要靠0占位啊! 除了日期,我们平时做数据集的时候,也最好对文件夹、文件名之类的统一长度。比如最近上海主办的人工智能天气预报创新大赛中,就要求提交结果所在的文件夹中表示测试样本的序列号必须为五位数,不满五位数的用0填满,就像这样式的: 5f930d768835979d66a6fa1f2df1a687.png 如果你不知道Python有自动补0的功能,那就比较崩溃了,就只能靠逻辑判断和循环来实现。像这次创新大赛的example总共有30000个,那么就得这么写:
for i in range(1,30001):    if(i<10):        f_exam = "example0000"+str(i)    elif(i<100):        f_exam = "example000"+str(i)    elif(i<1000):        f_exam = "example00"+str(i)    elif(i<10000):        f_exam = "example0"+str(i)    else:        f_exam = "example"+str(i)
这种写法,不仅太过冗长,而且还极大地拖慢了运行速度。最重要的是,它不够高大上啊!看起来逼逼赖赖,磨磨唧唧,愁肠百回,印堂发黑。要知道码如其人,这种代码也是会给编写者带来厄运的,比如持续脱发!循环脱发! 事实上,Python本身就自带补零函数:zfill()。它也是zero fill的缩写。 该函数返回指定长度的字符串,原字符串右对齐,前面填充0。具体的用法是:str.zfill(width)。这里的str为需要补零的字符串,width是补完0后字符串的总长度。仍然以上面30000个example的情况为例:
for i in range(1,30001):    f_exam = "example" + str(i).zfill(5)#'%05d'%i也行,不过我不喜欢。。
两行搞定~只有这样短小精悍却又寓意丰富的代码,才能充分体现出编写者高贵优雅、淡定从容、举重若轻、人无我有的气质。 拓展一下,其实Python除了自动补零,还可以自动补任意的字符,函数为:rjust()。 它的具体用法为:str.rjust(width[, fillchar])。其中,fillchar就是要用来补到前面的字符,默认为空格。它返回一个原字符串右对齐,并使用fillchar填充至长度width的新字符串。如果指定的长度小于字符串的长度则返回原字符串。 所以上面代码循环部分中的zfill语句,也可以写成:
f_exam = "example" + str(i).rjust(5,'0')
效果和自动补零是一样的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值