为什么“else”行给出了无效的语法错误?

时间:2011-03-22 23:36:46

标签: python syntax-error indentation if-statement

我遇到了这个错误:

File "zzz.py", line 70
    else:
       ^
SyntaxError: invalid syntax

导致问题的行在代码中标有注释:

def FileParse(self, table_file):
    vars={}
    tf = open(table_file, 'r')
    for line in tf:
        if line.startswith("#") or line.strip() == "": pass
        elif line.startswith("n_states:"):
            self.n_states = str(line[9:].strip())
        elif line.startswith("neighborhood:"):
            self.neighborhood = str(line[13:].strip())
        elif line.startswith("symmetries:"):
            self.symmetries = str(line[11:].strip())
        elif line.startswith("var "):
            line = line[4:]
            ent = line.replace('=',' ').\
            replace('{',' ').\
            replace(',',' ').\
            replace(':',' ').\
            replace('}',' ').\
            replace('\n','').split()
            vars[ent[0]] = []
            for e in ent[1:]:
                if e in vars: vars[ent[0]] += vars[e]
                else: 
                    vars[ent[0].append(int(e))]     
        else:
            rule = line.strip().split(",")
            for k in vars.keys():
                if k in rule:
                    for i in vars[k]:
                        change = rule.replace(k, i)
                        change = [int(x) for x in change]
                        w.rules.append(Rule(change[:5],change[5])

                else: # line which causes the problem

                    rule = [int(x) for x in rule]
                    w.rules.append(Rule(rule[:5],rule[5]))                  
    tf.close()
    self.parse_status "OK"
    return w.rules

w.rules是变量,分配给“World”类。

说实话,我不知道为什么会这样。在一切都很好之前,现在在其他缩进块中添加一些额外的指令后会出现错误。

有什么想法吗?

4 个答案:

答案 0 :(得分:29)

因为你遗漏了一个右大括号

w.rules.append(Rule(change[:5],change[5]) )

答案 1 :(得分:4)

前一行w.rules.append(Rule(change[:5],change[5])缺少一个关闭的页面。

答案 2 :(得分:4)

当你在这里时,又有一个错字。你可能想要:

self.parse_status "OK"

成为:

self.parse_status = "OK"

答案 3 :(得分:1)

删除多余的空格/行并重新缩进 if/else 语句。这对我有用。

(我在这里尝试了其他解决方案,但都没有奏效。我的牙套很好。)