Pythonで文字列を浮動小数点数に変換できるかどうかを確認する [重複] 質問する

Pythonで文字列を浮動小数点数に変換できるかどうかを確認する [重複] 質問する

文字列のリストを整数または浮動小数点数に変換する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 アプローチの相対的なメリットについての意見はありますか?

ベストアンサー1

私はただ使います。

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")

おすすめ記事