关于python:从1到01的python格式

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式的方法来做这件事。


你可以使用一个字符串的字符串的方法zfill垫有一个指定的宽度为零。A:指定宽度2

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更多的理解format语法的方法。


调用函数是将字符串格式的几个时代。

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