タイトル: can only concatenate str (not NoneType) to str
SEOタイトル: 【Pythonエラー】can only concatenate str (not NoneType) to str
エラー内容
|
can only concatenate str (not "NoneType") to str |
このエラーの意味
文字列 str に対して、None をそのまま連結しようとしたときに発生します。
Python では "abc" + None のような連結はできません。
よくある発生例
|
name = None message = "user: " + name |
この例では name が None なのでエラーになります。
原因
- 関数が想定外に
Noneを返している - 辞書やリクエスト値の取得結果が空で
Noneになっている - 初期化していない変数をそのまま連結している
対処法1: None かどうか先に判定する
|
name = get_name() if name is None: name = "" message = "user: " + name |
対処法2: 代替値を入れてから連結する
|
name = get_name() or "" message = "user: " + name |
空文字でよい場面なら、この形が簡潔です。
対処法3: そもそも None を返さないようにする
呼び出し元で毎回対処するより、関数側で空文字を返すようにした方が安全な場合もあります。
|
def get_name(): value = fetch_name() return value if value is not None else "" |
str() で無理やり変換する場合の注意
str(None) は "None" になるため、エラー回避だけならできます。
ただし、画面表示やCSV出力で文字列の None が混ざることがあるので、意味的に正しいか確認してから使うべきです。
まとめ
can only concatenate str (not "NoneType") to str は、文字列連結に None が混ざっているのが原因です。
まずは is None 判定か or "" で防ぎ、必要に応じて値の返し元を見直すと再発しにくくなります。