lVals = [1,08,2011]有什么理由抛出异常吗?

时间:2011-08-15 12:33:41

标签: python

我发现有一件事让我发疯。如果我指定以下列表:

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

当我将这些数字(0809)放在列表​​中的任何位置(例如[08,10,2011])时,即使我尝试分配{{ 1}}到单个08变量我得到相同的异常。

这有什么原因吗?

4 个答案:

答案 0 :(得分:14)

08正在尝试将8解析为八进制数字。它不是一个。

答案 1 :(得分:4)

我真的不懂Python,但我猜它会把起始0作为八进制文字的开头。

答案 2 :(得分: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]

答案 3 :(得分:2)

在Java中,零前缀将指定八进制值 - 因此01 ... 07正常,08将是一个错误,因为八进制中没有8。