#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. Без проблем. Рад помочь.