web-dev-qa-db-fra.com

Pourquoi la ligne "else" donne-t-elle une erreur de syntaxe invalide?

Je rencontre cette erreur:

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

La ligne à l'origine du problème est marquée d'un commentaire dans le code:

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 est une variable affectée à la classe "World".

Pour être honnête, je ne sais pas pourquoi je reçois ça. Avant, tout allait bien et maintenant cette erreur apparaît après l'ajout d'instructions supplémentaires dans d'autres blocs en retrait.

Des idées?

19
Mateusz Korycinski

Parce que tu as laissé une accolade de fermeture

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

La ligne précédente, w.rules.append(Rule(change[:5],change[5]), manque une parenthèse étroite.

4
B_.

Pendant que vous y êtes, il y a une autre faute de frappe. Vous voulez probablement:

self.parse_status "OK"

Être:

self.parse_status = "OK"
4
jathanism