「リストインデックスが範囲外です」という例外処理をしたい。質問する

「リストインデックスが範囲外です」という例外処理をしたい。質問する

使っています美しいスープいくつかの HTML を解析します。

各HTMLから特定のデータを取得しています(for ループを使用)そのデータを特定のリストに追加します。

問題は、HTMLの一部が異なるフォーマットを持っていることです(そして、そこには私が欲しいデータがありません)

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.

これに対して何をすべきでしょうか? 例外処理を使用する必要がありますか? または、もっと簡単な方法はありますか?

何か提案はありますか?どんな助けでも本当に助かります!

ベストアンサー1

例外を処理するのが最善の方法です。

try:
    gotdata = dlist[1]
except IndexError:
    gotdata = 'null'

もちろん、 ; をチェックすることもできますlen()dlist、例外を処理する方が直感的です。

おすすめ記事