このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

Pythonで文字列をfloatに変換する関数

Python でプログラムを書いていると、数値に見える文字列(例: “123.45")を float 型に変換したい場面はよくあります。

しかし、空文字や数値でない文字列(例: “abc")が入力されると、float() 関数はエラーを起こしてしまいます。

今回は、変換できない場合は 0.0 を返す安全な関数を作ったので、備忘録として残します。

def str_to_float(str):
    try:
        return float(str)
    except (ValueError, TypeError):
        return 0.0

関数のポイント

  1. try / except で例外処理
    float() 関数は変換できない文字列が渡されると ValueError を発生させます。
    また、None のように変換対象がそもそも文字列でない場合は TypeError が発生するため、両方をキャッチします。
  2. 変換できなければ 0.0 を返す
    変換できない場合は None を返す方法もありますが、今回は数値処理で使いやすいように 0.0 を返す仕様にしています。
  3. 引数名について
    引数名を str にすると組み込み型名と同じになってしまうため、
    実際の開発では s や text などに変えるのが無難です。

使用例

print(str_to_float("3.14"))   # 3.14
print(str_to_float("123"))    # 123.0
print(str_to_float("abc"))    # 0.0
print(str_to_float(""))       # 0.0
print(str_to_float(None))     # 0.0

この関数を使えば、外部入力やスクレイピング結果のように、

「数値かもしれないけど保証はない文字列」を安全に数値化できます。

Python

Posted by やろまい