ホーム › エラー解決 › Python › ValueError(int変換)
Python ERROR

Python ValueError: invalid literal for int() の原因と解決法

int()に「整数として解釈できない文字列」を渡すと発生するエラーです。カンマ入りの数字や空文字が典型的な原因です。

このエラーメッセージ

ValueError: invalid literal for int() with base 10: '1,000'

原因

❌ エラーになるコード

NG
price = "1,000"
number = int(price)
print(number * 2)

✅ 修正したコード

OK
price = "1,000"
number = int(price.replace(",", ""))
print(number * 2)
▶ 修正済みコードを実行エディタで開く
progoのPython実行環境(インストール不要・登録不要)でその場で動作を確認できます。

解決のポイント

変換前に文字列を整数として読める形に整えます。カンマはreplace(",", "")で除去、前後の空白はstrip()で除去します。小数の文字列はint(float("3.14"))のように一度floatを経由します。ユーザー入力を扱う場合はtry-exceptでValueErrorを捕捉すると安全です。

よくある質問

変換できるか事前に調べる方法は?
s.isdigit()で数字だけかを確認できます。ただし負の数や小数には使えないため、確実なのはtry-exceptです。
float()でも同じエラーが出る?
はい。float("abc")も同じValueErrorになります。対処の考え方は同じです。