Pythonで発生するNoneTypeエラーの原因と対処方法をまとめました。よくある原因ごとの解決方法をコード付きでご紹介します。
ぜひ、お試しください。
NoneTypeエラー対処まとめ 2選
‘NoneType’ object has no attribute ‘value’ エラー内容
セルの値を配列に格納しようとしたときに、10行目でエラーが発生しました。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws1 = wb['Sheet1']
ws1_Value = []
ws1_Max_Row = ws1.max_row
for i in range(1,ws1_Max_Row + 1):
ws1_Value.append(ws1.cell(i, 1)).value
エラー発生時のコマンドプロンプト
エラーとして表示されている英語の意味を調べてみました。
返す値をうまく取得できていないようです。
・[NoneType] → 返す値がない
・[object has no attribute] → オブジェクトは属性をもっていない

エラー解決方法
下記のように10行目のコードを修正したところ、エラー解決できました。
× → ws1_Value.append(ws1.cell(i, 1)).value
○ → ws1_Value.append(ws1.cell(i, 1).value)
括弧の位置を間違えていて、値を取得できていませんでした。
import openpyxl
wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws1 = wb['Sheet1']
ws1_Value = []
ws1_Max_Row = ws1.max_row
for i in range(1,ws1_Max_Row + 1):
ws1_Value.append(ws1.cell(i, 1).value)
‘NoneType’ object has no attribute ‘group’ エラー内容
Regexオブジェクトを使用して、文字列のパターンマッチングをしようとしたときに、
「’NoneType’ object has no attribute ‘group’」というエラーが発生しました。
該当のコード
import re
line = 'ところでドーナツは好きかい'
reg = re.compile(r'ドーナツ')
m = re.match(reg,line)
print(m.group())
エラー発生時のコマンドプロンプト
エラーとして表示されている英語の意味を調べてみました。
返す値をうまく取得できていないようです。
・[NoneType] → 返す値がない
・[object has no attribute] → オブジェクトは属性をもっていない

エラー解決方法
以下のコーディングに修正したところ、解決できました。
3行目の「line」に格納している文章を変更して、その他のコードは変更していません。
× → ’ところでドーナツは好きかい’
○ → ’ドーナツは好きかい’
import re
line = 'ドーナツは好きかい'
reg = re.compile(r'ドーナツ')
m = re.match(reg,line)
print(m.group())
変数 [line] に格納されている文字列の先頭に、
パターンマッチさせる文字列(ドーナツ)がないと、エラーになるようです。

この記事がお役に立ちますと幸いです。
・【Python】よくあるエラーの対処方法まとめ

「Python 1年生 体験してわかる!会話でまなべる!」
初めての方でも安心して取り組めるように丁寧に解説
簡単なサンプルを作りながら、対話形式でプログラミングまで紹介
人工知能の導入としてもオススメの1冊です!