语法错误无效标记

2024-03-28 03:15:29 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图给变量赋值时,我遇到了一个问题。当我尝试按以下顺序将日期作为元组或列表时,问题就出现了:year, month, day.

>>> a = (2016,04,03)         # I try to put the date into variable 'a' as a tuple.
SyntaxError: invalid token
>>> a = [2016,04,03]         # I try to put the date into variable 'a' as a list.
SyntaxError: invalid token
  1. 为什么会这样?

  2. 我该怎么修?

  3. token在Python中是什么意思?


Tags: thetotoken列表dateput顺序as
3条回答

在Python3中,数字不允许前导零。E、 克:

05
0123

不允许使用Etc,但应改为5123

然而,在Python 2中,前导零表示数字是一个八进制数(基数为8),因此0403分别表示43八进制数,但08无效,因为它不是有效的八进制数。

在Python 3中,八进制的语法更改为:

0o10
0o4

(以及允许使用0b0x前缀的其他基数,如二进制和十六进制)

至于您的另一个问题,Python中的一个标记是Python解释器将代码分成块的方式,以便它能够理解它(请参见here)。在这里,当标记器试图分割代码时,它不希望在那里看到零,因此抛出一个错误。

我建议(类似于其他答案)去掉前导零((2016,4,3))或使用字符串(("2016","04","03"))表示它们。

问题是4之前的0。 如果您想存储这种信息,请尝试使用字符串。

a = (2016,04,03) --> Error
a = (2016,4,3) --> No Error
a = ("2016","04","03") --> No Error
a = "2016-04-03" --> you could retrieve Year, Month and Day by splitting this string

在Python 2.x 04中被解释为八进制数。 在Python中,八进制数字是以0o4的形式写的,如这里所写的:http://docs.python.org/3.0/whatsnew/3.0.html#integers

04是Python 2.x中的有效整数文本。它被解释为一个基数8(八进制)数字。09也是无效的标记,因为9不是有效的八进制数字。

在Python 3中,八进制文字的形式发生了变化。仅前导零不再有效;您需要显式指定基。例如,0o12等于10

在您的例子中,您可能只需要删除前导0:a = (2016, 4, 3)。必要时,可以将前导零添加到元组的字符串表示形式中,而不是尝试显式存储它们。

相关问题 更多 >