Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Pythonプログラミング

【Python入門】データの空白によるリストのIndexErrorの解決方法の例

Python初心者に向けて、表データを扱う場合にリストでIndexErrorが出るときの解決法の一例を解説

今回はPythonでスクレイピングなどにより表データを取得して処理をする場合に、データの入力項目が抜けて空白になっているセルがあるのが原因で、例外の1つであるIndexErrorが出る場合の解決法の簡単な一例を解説します。

IndexErrorの原因とデータの空白

次の表を見て下さい。

メニュー価格カロリー
カレー7801000
ラーメン800
ハンバーグセット1000600

こういった表(HTMLのテーブル)データがあったとします。

通常こういう表データをすクレイピングで取得して処理するときは、次のような感じでしょうか。

table = HTMLのテーブルデータのオブジェクト
(略)

# tableを使った繰り返し処理
for i in range(0, XXXX):
    tableをもとにして新しいリストを作るなどの処理
    (略)
     

ただしこの場合、上の表にはラーメンの価格の項目に空白があります。

それに気づかずに繰り返し処理を使って、リストを作成したりするとIndexErrorとなることがあります。

ラーメンのところだけ、リストの項目数が1つ減るからです。

この場合は例外の1種としてのIndexErrorが出ているわけですが、例外をうまく処理するtry文を使って解決する方法があります。

例外処理のtry文を使った解決法

たとえば、簡単すぎるコードですが次のような処理を繰り返し処理の中に組み入れると解決できます。

try:
    price = 表データから価格情報を取得する処理
except IndexError:
    price = 'TBC'  # TBC: to be confirmed (現時点で未確認という意味)

このコードの内容は、まずtry文の中のtry節の処理である、

 price = 表データから価格情報を取得する処理

が実行されてIndexErrorが出たときに、except節の中の処理が行われるいうものです。

こうすることで、ラーメンの価格情報(price)にTBCという文字列データが設定されるので空白データを補完することができ、他のメニューと同じ処理が可能となります。

また例外が生じるとプログラムが終了してしまいますが、このようにtry文を設定することで、例外が生じてもプログラムの実行が続行するようにできます。

今回の例は価格というカテゴリーだけの空白を埋める処理でしたが、その他の「メニュー」や「カロリー」といったカテゴリーにおいても、このようなtry文によるチェックシステムを設定しておくと、例外やエラーに強いプログラムとなります。

Pythonにおける例外処理とtry文の使い方の基本については、次の記事で解説していますのでぜひ読んでみてください。