Я хочу обработать исключение ' индекс списка вне диапазона.'
Я использую BeautifulSoup и разбор некоторых HTMLs.
Я получаю определенные данные из каждого HTML (используя цикл for) и добавление этих данных в определенный список.
проблема в том, что некоторые HTMLs имеют другой формат (и у них нет данных, что я хочу в них).
так, я пытался использовать обработку исключений и добавить значение null
в список (я должен сделать это, так как последовательность данных-это важно.)
например, у меня есть следующий код:
soup = BeautifulSoup(links)
dlist = soup.findAll('dd', 'title')
# I'm trying to find content between <dd class='title'> and </dd>
gotdata = dlist[1]
# and what i want is the 2nd content of those
newlist.append(gotdata)
# and I add that to a newlist
и некоторые ссылки не имеют никакого <dd class='title'>
, так что я хочу сделать, это добавить строку null
в список вместо этого.
list index out of range.
то, что я сделал, это добавить некоторые строки, как это:
if not dlist[1]:
newlist.append('null')
continue
но это не сработает. Он по-прежнему показывает ошибку:
list index out of range.
что мне с этим делать? Должен ли я использовать обработка исключений? или есть более простой способ?
какие предложения? Любая помощь будет действительно здорово!
6 ответов:
обработка исключения-это путь:
try: gotdata = dlist[1] except IndexError: gotdata = 'null'
конечно, вы также можете проверить
len()
ofdlist
; но обработка исключения более интуитивно понятна.
у вас есть два варианта; либо обрабатывать исключение или проверить длину:
if len(dlist) > 1: newlist.append(dlist[1]) continue
или
try: newlist.append(dlist[1]) except IndexError: pass continue
используйте первый, если есть часто нет второго пункта, второй, если есть иногда это не второй пункт.
троичный будет достаточно. изменение:
gotdata = dlist[1]
до
gotdata = dlist[1] if len(dlist) > 1 else 'null'
Это короткая рука для
if len(dlist) > 1: gotdata = dlist[1] else: gotdata = 'null'
принимая ссылку ThiefMaster♦ иногда мы получаем ошибку со значением, заданным как '\n ' или null и выполняем для этого необходимое для обработки ValueError:
обработка исключения-это путь
try: gotdata = dlist[1] except (IndexError, ValueError): gotdata = 'null'