1. ホーム
  2. python

[解決済み] リストインデックスが範囲外」という例外処理をしたい。

2022-06-22 06:22:30

質問

私は ビューティフルスープ を使っていて、いくつかの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.

これはどうすればいいのでしょうか?例外処理を使うべきでしょうか? それとももっと簡単な方法があるのでしょうか?

何か提案はありますか?どんな助けでも、本当に素晴らしいでしょう

どのように解決するのですか?

例外を処理するのがよいでしょう。

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

もちろん len()dlist のような例外が発生しますが、例外の処理はより直感的です。