Python で、文字列を数値(decimal)に変換可能かどうかを調べるには、どうすればいいんだろう?
C# なら TryParse メソッドが用意されているので、次のように書ける。
decimal value; if (decimal.TryParse(decimalString, out value) == false) { // decimal に変換できないときの処理 }
Python の文字列には isdigit() メソッドがあるけど、文字列が全て数字のときしか True にならない。小数の文字列は False と判断されてしまう。
"12345".isdigit() #=> True "12.345".isdigit() #=> False
よって、このメソッドは使えない。
次のように、キャスト Decimal オブジェクトを生成してみるしかないんだろうか?
try: value = Decimal(decimal_string) except InvalidOperation: # Decimal に変換できないときの処理