Python3 str.isnumeric()のfloat版

なぜか用意されていない。 isnumeric()では小数の判断ができない。 isfloat()みたいなのが欲しかった。 結局、以下のような関数を定義した。
def isfloat(numstr, finite=True, nan=False):
    """
    floatかどうかをチェックする.
    numstr: 文字列, finite: 有限のみを許容するか, nan: NaNを許容するか
    """
    # NaNチェック
    if (not nan) and numstr == 'nan':
        return False
    if finite and numstr in ('Infinity','inf'):
        return False
    try:
        num = float(numstr)
        return True
    except ValueError:
        return False
    except OverflowError:
        return False

コメント

タイトルとURLをコピーしました