1. ホーム
  2. パイソン

[解決済み】Pythonで文字列がfloatに変換できるかどうか確認する方法

2022-04-06 22:05:19

質問

文字列のリストを実行して、可能であれば整数または浮動小数点数に変換するPythonのコードをいくつか持っています。 整数のためにこれを行うことは非常に簡単です

if element.isdigit():
  newelement = int(element)

浮動小数点数はもっと難しいです。今、私が使っているのは partition('.') で文字列を分割し、片側または両側が数字であることを確認します。

partition = element.partition('.')
if (partition[0].isdigit() and partition[1] == '.' and partition[2].isdigit()) 
    or (partition[0] == '' and partition[1] == '.' and partition[2].isdigit()) 
    or (partition[0].isdigit() and partition[1] == '.' and partition[2] == ''):
  newelement = float(element)

これはうまくいくのですが、明らかにそのためのif文がちょっと面倒なんです。 私が考えた他の解決策は、try/catch ブロックで変換をラップして、それが成功するかどうかを確認することです。 この質問 .

どなたか他のアイデアをお持ちの方はいらっしゃいませんか?パーティションとtry/catchアプローチの相対的な利点についての意見は?

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

私なら...

try:
    float(element)
except ValueError:
    print "Not a float"

...シンプルで、うまくいきますね。ただし、要素が1<<1024のような場合はOverflowErrorを投げることに注意してください。

もう一つの選択肢は、正規表現です。

import re
if re.match(r'^-?\d+(?:\.\d+)$', element) is None:
    print "Not float"