読者です 読者をやめる 読者になる 読者になる

Python に C# の TryParse に相当するメソッドが見当たらない

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 に変換できないときの処理