Python「unindent does not match any ~」とは?

みなさんこんにちは!
イザナギです!
現在もボチボチプログラミングして、様々なことをしています。
最近ではPython使ってデータ分析などを行っているのですが、最近、こんなエラーに見舞われたんですよね。


unindent does not match any outer indentation level

なんやこれ?
Pythonを触り始めて間もない私は「?」になりました。
でも、Pythonを日頃から触っている方はご存知の方も多いと思います。
実は、このエラー「インデントがおかしいときに起こるエラー」なんです!
Pythonではインデントを用いて、複文(ブロック)を表します。


for row in csv.reader(f): 
  list.append(row[0])

Pythonだとこんな感じでインデントしますよね?
ですが、このように書いてもたまに「unindent does not match any outer indentation level」と怒られてしまいました。
果たして原因はなんなんでしょうか?
今回はそれについて調べていきたいと思います。 

考察1:インデントの空白文字数が違う

初めに考えたのは、「インデントに使用した空白文字数」に関してです。
このエラーが起こる時は「インデントがおかしいときに起こるエラー」となっているので、「インデントがおかしいよ!」と言われているわけです。
なので、インデントを消してもう一度インデントを入れてみることにしました。
結果、私の場合は治りませんでした。

考察2:エラーとは別の行がおかしい?

考察位置では解決しませんでした。
なので、「他の行のコードがおかしいのでは?」と考えました。
いったん追加したコードを削除して実行してみました。
しかし、その時は通常通りに実行できたので、他のコードがおかしいということはなさそうでした。

考察3:エディタの設定がおかしい?

私の場合おそらくこれが原因でした。
私の使っているエディタでは、改行すると自動的にインデントを下げてくれます。
その機能を使っている一部の部分が今回のエラー場所でした。
その部分のインデントを消して、空白で埋めたらその部分のエラーは消えました。
しかし、その部分以外のところでエラーが出てしまいました。
その作業を繰り返してやっと正常に動作するようになりました。
結局なんだったんだろう?

まとめ

今回は「unindent does not match any outer indentation level」について調べてみました!
結局最後まで、本当の原因がわからないままでした。
でも、直ったので一安心!
それでは今回はここで筆を置かせていただきます!
最後まで記事をご覧いただきありがとうございました!

■関連記事(精度そんな良くないかもwww)

■関連トピック

2024 - Izanagi's Site