当前位置: 代码迷 >> python >> 为什么Python在从string转换为int时会删除前导零?
  详细解决方案

为什么Python在从string转换为int时会删除前导零?

热度:50   发布时间:2023-07-16 10:03:43.0
>>> num = int('0241034812')
>>> print(num)
241034812
>>> 

在上面的代码中,我将变量num设置为0241034812 ; 但是,当我打印变量时,它会删除第一个零。

为什么会这样?

整数存储/显示为“正常”数字,而不是字符串值。 如果要显示前缀为零的数字,则可以在显示变量时执行此操作。

您可以使用以下语法将前导零添加到整数:

print "%010d" % (241034812,)

上面的示例将显示整数241034812,其中10位数字为0241034812

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

不,你将它设置为241,034,812:一个整数值,大约二亿四千万。 如果要将其设置为'0241034812' ,则应使用字符串而不是整数。 也就是说,你应该将调用放到int

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

您希望将整数打印到特定的零填充宽度,使用字符串格式。 ,例如:

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

或者首先打印解析整数的原始字符串。

整数不存储'打印宽度'或任何数字的前导0位数。

如果您以一种前导零有用/重要(可能是条形码,ISBN等)的格式存储某些数字,则可以在使用.format转换回字符串时重新添加它们。

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

简而言之,格式规范中的第一个0表示如果不存在则添加前导零以填充10(10)个字符。

  相关解决方案