I hav开发者_开发百科e discovered one thing that makes me crazy. If I specify the following list:
lVals = [1, 01, 2011]
then no errors will be displayed, and the same will happen if I use 02,03,04,05,06,07
, but in case I use 08
or 09
as the second item in the list, I get the following exception:
>>> a = [26, 08, 2011]
File "<stdin>", line 1
a = [26, 08, 2011]
^
SyntaxError: invalid token
Also the same behavior appears when I put these numbers (08
,09
) at the any location within list (eg. [08,10,2011]
), even if I try to assign 08
to a single int
variable I get the same exception.
Is there any reason why this happens?
08
is attempting to parse 8
as an octal digit. It isn't one.
I don't really know Python, but I'd guess it takes the starting 0 as the beginning of an octal literal.
I guess what you're trying to do is split a date and put it in a list. This is what works for me:
>>> 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]
In Java, the zero prefix would specify an Octal value - so 01...07 are fine, 08 would be an error as there is no 8 in Octal.
精彩评论