1. ホーム
  2. python

[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?

2022-03-15 17:43:11

質問

Pythonで文字列が数字として表現できるかどうかを確認するための最良の方法は何ですか?

今現在、私が持っている関数は

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

これは、醜くて遅いだけでなく、不格好に見えます。しかし、私はより良い方法を見つけられていません。 float() をmain関数内で使用することは、さらに悪いことです。

解決方法は?

<ブロッククオート

醜くて遅いだけでなく

どちらも異論があります。

正規表現など文字列のパース方法は、より醜く、より遅くなります。

上記より速くなるものはあまりないかと思います。 これは、関数を呼び出して返します。 Try/Catchは、最も一般的な例外はスタックフレームを広範囲に検索することなく捕捉されるため、それほどオーバーヘッドを生じさせません。

問題は、どんな数値変換関数も2種類の結果を持つということです。

  • 数字(数字が有効である場合
  • 有効な数値が解析できなかったことを示すステータスコード(例:errno経由)または例外。

C言語では(例として)様々な方法でこれを回避することができます。 Pythonはそれを明確かつ明示的に示しています。

これを行うためのあなたのコードは完璧だと思います。