我发现有一件事让我发疯。如果我指定以下列表:
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]
)时,即使我尝试分配{{ 1}}到单个08
变量我得到相同的异常。
这有什么原因吗?
答案 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。