为什么Python在从字符串转换为整数时去掉前导零?

3 投票
4 回答
20337 浏览
提问于 2025-04-17 23:34
>>> num = int('0241034812')
>>> print(num)
241034812
>>> 

在上面的代码中,我把变量 num 设置成了 0241034812;但是,当我打印这个变量的时候,它把开头的零给删掉了。

这是为什么呢?

4 个回答

0

如果你想把一个整数打印成特定宽度,并且前面要补零,可以使用字符串格式化。比如可以用format()这个函数来实现:

>>> num = 241034812
>>> print(format(num, '010d'))
0241034812

或者你也可以直接打印你最开始用来解析这个整数的原始字符串。

需要注意的是,整数本身并不保存“打印宽度”或者前面有多少个零。

1

如果你在存储一些数字时,前面的零是有用的或者很重要(比如条形码、ISBN号等),那么在把这些数字转换回字符串的时候,可以用.format来重新加上这些前导零。

>>> num = int('0241034812')
>>> print('{:010d}'.format(num))
0241034812

简单来说,格式说明中的第一个0表示如果没有前导零,就要加上前导零,以填满10个字符的位置。

1

我把变量'num'设置为'0241034812'

不,其实你把它设置成了241,034,812:这是一个整数值,大约是两亿四千一百多万。如果你想把它设置为'0241034812',你应该用字符串而不是整数。也就是说,你应该去掉int的调用:

>>> num = '0241034812'
>>> print(num)
0241034812
>>> 
4

整数是以“正常”的数字形式存储和显示的,而不是以字符串的形式。如果你想在显示这个数字的时候前面加上零,可以在显示变量的时候做到这一点。

你可以使用以下语法来给整数加上前导零:

print "%010d" % (241034812,)

上面的例子会把整数241034812显示成10位数,结果是0241034812

撰写回答