Pythonic formatting from 1 to 01
本问题已经有最佳答案,请猛点这里访问。
我希望能够格式化我的函数的日期/时间输入。
目前,我有一个函数,如果一个数字只有1位长,它基本上会在它后面加一个0。
1 2 3 4 | def format_num(str(num)): if len(num) < 2: return"0" + num return num |
我想知道是否有一个更为Python式的方法来做这件事。
你可以使用一个字符串的字符串的方法
1 2 | >>> '1'.zfill(2) '01' |
超过一个字符的字符串不被感动的。
1 2 | >>> '31'.zfill(2) '31' |
1 2 | >>> ["{:02}".format(num) for num in (1,22,333)] ['01', '22', '333'] |
湖https://docs.python.org / 2 /图书馆/ string.html # formatspec更多的理解
调用函数是将字符串格式的几个时代。
1 2 3 4 | >>>"%02d" % 8 '08' >>>"%02d" % 80 '80' |
所以如果你在乎的是试图避免函数调用的性能。
1 2 3 4 5 6 7 8 | python -m timeit"'%02d' % 8" 100000000 loops, best of 3: 0.0166 usec per loop python -m timeit"'8'.zfill(2)" 10000000 loops, best of 3: 0.163 usec per loop python -m timeit"'{:02}'.format(2)" 1000000 loops, best of 3: 0.385 usec per loop |
在简单的和经常被搜索的代码,把一个更快的解决方案。
一个直接的回答你的问题
你可以这样:你的号码格式
1 | format(num, '02d') |
例子:
1 2 3 4 | nums = [1,22,333] for num in nums: print format(num, '02d') |
输出:
1 2 3 | 01 22 333 |
然而,你使用的是你说的日期时间。你可以直接的DateTime对象格式
1 2 | %d - Zero padded day %m - Zero padded month |