python синтаксическая ошибка для: в конце для if if, понятия не имею почему - PullRequest
0 голосов
/ 24 февраля 2020

Я запускаю следующий код:

with open("tmp/"+filename.stem+".txt", "r") as infile:
        readfile = infile.readlines()
        with open("test/"+filename.stem+".txt", "w") as outfile:
            for i, line in enumerate(readfile) if 'M32' in line:
                if '%' in readfile[i - 1]:
                    outfile.write(readfile[i - 6] + '\n')
                    outfile.write(readfile[i - 3] + '\n')
                    outfile.write(readfile[i - 1] + '\n')
                    print(i)
                    print(line)
                else:
                    outfile.write(readfile[i - 3] + '\n')

и получаю эту ошибку:

 for i, line in enumerate(readfile) if 'M32' in line:
                                                       ^
SyntaxError: invalid syntax

Я не уверен, почему, насколько я знаю: правильно размещен , Любая идея, почему это происходит?

Редактировать: теперь я знаю, что вы не можете поставить условный inline с forl oop

Ответы [ 2 ]

4 голосов
/ 24 февраля 2020

Вы не можете добавить фильтр в эту позицию; это не понимание или выражение генератора.

for i, line in enumerate(readfile):
    if 'M32' not in line:
        continue
    ...

Однако итератор файла можно отфильтровать с помощью выражения генератора:

for i, line in enumerate(line for line in readfile if 'M32' in line):
1 голос
/ 24 февраля 2020

Вы не можете объединить for l oop с оператором if ...

with open("tmp/"+filename.stem+".txt", "r") as infile:
        readfile = infile.readlines()
        with open("test/"+filename.stem+".txt", "w") as outfile:
            for i, line in enumerate(readfile):
                if 'M32' in line:
                    if '%' in readfile[i - 1]:
                        outfile.write(readfile[i - 6] + '\n')
                        outfile.write(readfile[i - 3] + '\n')
                        outfile.write(readfile[i - 1] + '\n')
                        print(i)
                        print(line)
                    else:
                        outfile.write(readfile[i - 3] + '\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...