我需要将前导零添加到整数,使一个具有定义数量的数字($cnt)的字符串。 把这个简单的函数从PHP翻译成Python的最好方法是什么:
function add_nulls($int, $cnt=2) {
$int = intval($int);
for($i=0; $i<($cnt-strlen($int)); $i++)
$nulls .= '0';
return $nulls.$int;
}
有没有函数可以做到这一点?
我需要将前导零添加到整数,使一个具有定义数量的数字($cnt)的字符串。 把这个简单的函数从PHP翻译成Python的最好方法是什么:
function add_nulls($int, $cnt=2) {
$int = intval($int);
for($i=0; $i<($cnt-strlen($int)); $i++)
$nulls .= '0';
return $nulls.$int;
}
有没有函数可以做到这一点?
当前回答
标准的方法是使用格式化字符串修饰符。这些格式化字符串方法在大多数编程语言中都是可用的(例如,通过c中的sprintf函数),是一种方便的工具。
输出长度为5的字符串。
... 在Python 3.5及以上版本中:f-strings。
i = random.randint(0, 99999)
print(f'{i:05d}')
在这里搜索f-strings以获得更多细节。
... Python 2.6及以上版本:
print '{0:05d}'.format(i)
... Python 2.6之前:
print "%05d" % i
参见:https://docs.python.org/3/library/string.html
其他回答
一个简单的转换将是(同样使用函数):
def add_nulls2(int, cnt):
nulls = str(int)
for i in range(cnt - len(str(int))):
nulls = '0' + nulls
return nulls
你至少有两个选择:
str.zfill: lambda n, cnt=2: str(n).zfill(cnt) %格式:lambda n, cnt=2: "%0*d" % (cnt, n)
如果在Python >2.5上,请参阅clorz回答中的第三个选项。
Python 2.6允许这样做:
add_nulls = lambda number, zero_count : "{0:0{1}d}".format(number, zero_count)
>>>add_nulls(2,3)
'002'
这是我的Python函数:
def add_nulls(num, cnt=2):
cnt = cnt - len(str(num))
nulls = '0' * cnt
return '%s%s' % (nulls, num)
你可以使用zfill()方法填充一个零字符串:
In [3]: str(1).zfill(2)
Out[3]: '01'