为什么 lVals = [1, 08, 2011] 会抛出异常?
我发现了一件让我很困惑的事情。如果我指定以下这个列表:
lVals = [1, 01, 2011]
那么不会出现任何错误。如果我用 02,03,04,05,06,07
也是一样,但如果我在列表的第二个位置使用 08
或 09
,就会出现以下的异常:
>>> 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
不是八进制数字。