如何将000000000001转化为1?

4 投票
4 回答
596 浏览
提问于 2025-04-15 17:35

我需要把一个格式化的整数变成普通的整数:

  • 像000000000001这样的数字需要变成1
  • 像000000000053这样的数字需要变成53
  • 像000000965948这样的数字需要变成965948

还有很多类似的情况。

我发现直接用int(000000000015)会得到13,这让我觉得背后有些奇怪的东西在作怪。那么,有什么好的方法可以每次都准确地做到这一点呢?

4 个回答

3

试试这个:

>>> int('00000000053', 10)
53
11

0 开头的数字被认为是 八进制

>>> 07
7
>>> 08
   File "<stdin>", line 1
   08
    ^
SyntaxError: invalid token

你可以把这个以零开头的数字放进一个字符串里,这样就可以正常使用了。

>>> int("08")
8

int() 函数可以接受一个可选的参数,这个参数是进制,所以上面的内容相当于:

>>> int("08", 10)
8
8

前面的零被认为是八进制的。我假设你是在转换字符串“000000013”,而不是字面上的000000013,所以你可以通过 int("000000013",10) 将它们转换为十进制整数。

如果“伤害已经造成”,也就是说这些数字已经被当作八进制字面量处理过了,你可以使用以下方法(注意,这种做法有风险,不推荐使用):

int(("%o" % 00000013),10)

撰写回答