Python if 语法 3.2.2
这是个很基础的问题,但这段代码有什么问题呢?
for row in rows:
if row["Type"] = 'DEADLINE':
print (row["Title"])
我遇到了一个错误,提示是 TabError: inconsistent use of tabs and spaces in indentation
,指向了if语句后面的冒号。
抱歉如果这个问题对Stack Overflow来说太简单了,但我不确定这是因为我从Python 2.x转到3.x时出现的问题,还是我还没学会的语法问题。
谢谢大家
编辑:问题解决了。我没注意到我的文本编辑器的“将制表符转换为空格”功能是关闭的。所以,确实是制表符和空格混用了。我原以为这个提示是说我在空白字符的使用上不一致,比如空格太多之类的。
对了,我知道单个的=是语法错误,那是我试图解决TabError时写的,显然是错的。
3 个回答
2
问题似乎出在你用来缩进代码的空白字符上。你混用了制表符和空格。我建议你在编辑器中使用“显示空白字符”的功能,把代码中的所有制表符换成正确数量的空格。
如果你的编辑器没有“显示空白字符”的功能,你可以通过在行首临时插入一个空格来找到制表符,看看这一行的末尾是否也正好移动了一个空格。如果没有移动,或者移动了(比如)4个或8个字符,那说明这一行上有一个制表符。
3
你真正的问题是,在if
语句的条件里,你用了单个=
,而应该用两个==
。
另外,确保你在编辑Python代码时,把编辑器设置成只用空格,不要用制表符(tabs)。
7
你可能在缩进的时候混用了制表符和空格,就像错误信息所说的那样。
有些编辑器会很烦人地自动把8个空格替换成一个制表符,所以你的代码可能实际上看起来是这样的:
for row in rows:
if row["Type"] = 'DEADLINE':
->print (row["Title"])
这里的 ->
代表一个制表符。
你可以让编辑器显示制表符,并且不要再替换空格了。
或者,你可以选择统一使用一个制表符来进行缩进。