开发者

Is there any reason why lVals = [1, 08, 2011] throws an exception?

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜