Ошибка имени: переменная не определена при поиске ключевого слова с помощью python

#python #python-3.x #csv

Вопрос:

Я пытаюсь сканировать несколько файлов и искать два ключевых слова в одной строке. Я пытаюсь найти ключевые слова «SEQADV» и «МУТАЦИЯ» в одной строке. Проблема в том, что я продолжаю получать ошибку «Ошибка имени: имя ‘wt_residue’ не определено». Когда я ищу одно ключевое слово «SEQADV», программа работает без сбоев.

         if 'SEQADV' and 'MUTATION' in line:
            try:
                mutation = line.split()
                sequence_number = mutation[4]
                chain = mutation[3]
                mutant_residue = mutation[2]
                wt_residue = mutation[7]
            except IndexError:
                pass

#Prints all data to the .csv file above and closes the file 
            print(",".join([pdb_name, mutant_residue, chain, sequence_number, wt_residue]), file=datafile)    
datafile.close()
 

Комментарии:

1. эта строка неверна if 'SEQADV' and 'MUTATION' in line: и wt_residue не объявлена, если код попадает в блок кроме

2. except IndexError: pass это действительно плохая идея. Скорее всего, вы получите ошибку до того, как она будет назначена. Избавьтесь от try этого и посмотрите , не появится ли ошибка.

3. ОК. Я удалил все, кроме IndexError: pass, но затем я получаю еще одну ошибку с надписью «Индекс списка вне диапазона». Как бы я исправил, пожалуйста, утверждение «если»?

4. if 'SEQADV' and 'MUTATION' in line: эквивалентно if 'MUTATION' in line: . 'SEQADV' оценивается как логическое выражение и всегда оценивается True в этом контексте.

Ответ №1:

Попробуйте изменить свое утверждение if на if 'SEQADV' in line.split() and 'MUTATION' in line.split():

Комментарии:

1. спасибо, я не знаю, почему я об этом не подумал, но это сработало

2. Без проблем. Рад помочь.