为什么 lVals = [1, 08, 2011] 会抛出异常?

9 投票
4 回答
1012 浏览
提问于 2025-04-16 23:37

我发现了一件让我很困惑的事情。如果我指定以下这个列表:

lVals = [1, 01, 2011]

那么不会出现任何错误。如果我用 02,03,04,05,06,07 也是一样,但如果我在列表的第二个位置使用 0809,就会出现以下的异常:

>>> a = [26, 08, 2011]
  File "<stdin>", line 1
    a = [26, 08, 2011]
              ^
SyntaxError: invalid token

而且当我把这些数字(08,09)放在列表的任何位置时(比如 [08,10,2011]),也会出现同样的情况。即使我尝试把 08 赋值给一个单独的 int 变量,也会出现同样的异常。

这到底是为什么呢?

4 个回答

3

我想你想做的事情是把一个日期拆分开,然后放到一个列表里。这是我用过的有效方法:

>>> date = "28-08-2011".split("-")
>>> for i, num in enumerate(date):
...     date[i] = int(num, 10) # changes octal to decimal, thus losing the prefix 0
... 
>>> date
[28, 8, 2011]
4

我对Python不是很了解,但我猜它把开头的0当作八进制数字的开始。

14

08 正在尝试把 8 解析为八进制数字,但 8 不是八进制数字。

撰写回答