Наличие функции для выполнения другого действия, если idex находится вне диапазона? - PullRequest
0 голосов
/ 02 февраля 2020
result1= r_record1.annotations['accessions'][1]
result2 = r_record1.annotations['accessions'][0]
s_handle1= Entrez.esummary(db='nucleotide', id=**result1 or result2**, rettype='gb', retmode='text')
s_record1= Entrez.read(s_handle1)

Этот код взят из тела функции, которую я пишу. По сути, я анализирую записи и мне нужно извлечь идентификатор из списка, но очень немногие из сотен записей, которые я просматриваю, имеют только один элемент в списке. Большинству записей нужен второй элемент в списке (первая строка), но немногим нужна первая запись (строка 2). Есть ли способ, которым я могу ввести в строку 3 способ выбора первого результата1 и если индекс выходит за пределы диапазона, выбрать результат 2 (жирный шрифт)?

1 Ответ

0 голосов
/ 02 февраля 2020

В ответ на вопрос в заголовке вашего поста вы можете сделать следующее:

try:
     # your code here for choosing the "first result1"
except IndexError:
     # your code here for choosing "result 2 (bold)"

Возможно, вы захотите узнать больше о try / кроме обработки исключений в Python. В частности, здесь вы обрабатываете ошибку IndexError .

Я подозреваю, что вы на самом деле хотите посмотреть длину вашего списка annotations['accessions'] для каждую запись (используя len(r_record1.annotations['accessions'])), а затем выполните соответствующий [0] или [1] доступ соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...