1. ホーム
  2. python

[解決済み] 文字列から浮動小数点数を抽出する方法 [重複] (英語)

2022-06-17 06:52:50

質問

と似たような文字列がいくつもあります。 Current Level: 13.4 db. のような文字列があり、浮動小数点数だけを抽出したいと思います。浮動小数点は整数であることもあるので、小数ではなく浮動小数点と言っています。RegExはこれを行うことができますか、またはより良い方法がありますか?

どのように解決するのですか?

floatが常に10進数で表現されている場合、以下のようになります。

>>> import re
>>> re.findall("\d+\.\d+", "Current Level: 13.4 db.")
['13.4']

で十分かもしれません。

より堅牢なバージョンとしては

>>> re.findall(r"[-+]?(?:\d*\.\d+|\d+)", "Current Level: -13.2 db or 14.2 or 3")
['-13.2', '14.2', '3']

ユーザー入力を検証したい場合は、代わりに直接ステップを踏んでfloatをチェックすることもできます。

user_input = "Current Level: 1e100 db"
for token in user_input.split():
    try:
        # if this succeeds, you have your (first) float
        print float(token), "is a float"
    except ValueError:
        print token, "is something else"

# => Would print ...
#
# Current is something else
# Level: is something else
# 1e+100 is a float
# db is something else