2015年12月9日

str.isfloatのようなもの

文字列の内容が小数であるかどうかを確かめたい場合があります。
str型は isdecimal()、isdigit()、isnumeric() と文字列が数値であるかどうかを確認するメソッドを持っています。しかし、このいずれのメソッドも文字列が小数であった場合には False を返します。
>>> '1.0'.isdecimal()
False

>>> '1.0'.isdigit()
False

>>> '1.0'.isnumeric()
False


では、文字列が小数であるかどうかをどのように調べるべきでしょうか?
最も簡単なのは、以下の関数のようなやり方です。
>>> def isfloat(string):
...     try:
...         float(string)  # 文字列をfloatにキャスト
...         return True
...     except ValueError:
...         return False
...

>>> isfloat('1.0')
True

>>> isfloat('a')
False

注意点として、あくまで float へキャスト可能かどうかを調べているだけなので、文字列が整数であった場合や指数表記であった場合にも、関数は True を返します。
>>> isfloat('1')  # 整数
True

>>> isfloat('1e-1')  # 指数表記
True

0 件のコメント:

コメントを投稿