当我尝试为变量赋值时,我遇到了问题。当我尝试按此顺序将日期作为元组或列表时,问题就出现了: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
在Python 3中,数字不允许前导零。例如:
05
0123
等等是不允许的,但应该写成5
和123
。
然而,在Python 2中,前导零表示该数字是八进制数(基数为8),因此04
或03
分别表示八进制中的4
和3
,但08
将无效,因为它不是有效的八进制数。
在Python 3中,octals的语法更改为:
0o10
0o4
(以及使用0b
或0x
前缀允许其他基础,如二进制和十六进制。)
至于你的另一个问题,Python中的一个标记是Python解释器将你的代码分成块的方式,这样它就能理解它(参见here)。这里,当标记生成器试图分割你的代码时,它不会期望在那里看到零,因此抛出错误。
我建议(与其他答案类似)你放弃前导零((2016,4,3)
)或使用字符串(("2016","04","03")
)表示这些。
04
是Python 2.x中的有效整数文字。它被解释为base-8(八进制)数。 09
也是一个无效的标记,因为9
不是有效的八进制数字。
在Python 3中,八进制文字的形式发生了变化。单独的前导零不再有效;你需要明确指定基数。例如,0o12
等于10
。
在你的情况下,你可能只想删除前导0:a = (2016, 4, 3)
。必要时,可以将前导零添加到元组的字符串表示形式,而不是尝试显式存储它们。
问题是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 3中,八进制数字以0o4的形式写成,如下所示:http://docs.python.org/3.0/whatsnew/3.0.html#integers
在python版本2.7中,当我们在任何数字之前使用0并且该数字在八进制数系统中无效时,我们会收到错误。对于例如如果我们使用08或09,那么我们将遇到相同的错误'无效令牌'。
Python解释器将整个脚本划分为各个部分,这些部分称为令牌。这里,08将被视为令牌,因此它在八进制中并且在该数字系统中无效,因此发生这种错误。
你可以尝试运行像a = 04这样的简单陈述并提及结果吗?如果它只在使用元组或列表时工作和失败,那么它可能是特定python版本的问题。如果它不起作用,那么您的机器配置有问题。在这种情况下,如果您使用的是旧版本,则可以升级python版本。
当我们安装模块时,有时错误显示SyntaxError invalid token然后使用以下命令
pip install --upgrade pip
之后,使用两个命令安装模块
easy_install package_name
pip install package_name