【Python】文字列が有効な数値かどうかを判定する方法
プログラミングでは、ある文字列が数値として有効かどうかを判定したい場面がよくあります。たとえば、「0.2」「abc」「hello」「-2.5」「10」という文字列が与えられた場合、判定結果はそれぞれ true、false、false、true、true となります。
この記事では、Pythonを使って文字列が有効な数値を表しているかどうかをチェックする方法を解説します。
解決のアプローチ
この問題を解くには、Pythonの文字列パース(型変換)の仕組みを利用します。具体的には、次の手順で判定を行います。
- 文字列を
float()関数で数値に変換してみます。 - 変換が成功して例外が発生しなければ、その文字列は有効な数値です。
- 変換時に例外(
ValueErrorなど)が発生した場合は、数値ではないと判断できます。
実装例
以下に、実際のコード実装を示します。
class Solution(object):
def isNumber(self, s):
s = s.strip()
try:
s = float(s)
return True
except:
return False
ob = Solution()
print(ob.isNumber("0.2"))
print(ob.isNumber("abc"))
print(ob.isNumber("Hello"))
print(ob.isNumber("-2.5"))
print(ob.isNumber("10"))コードのポイント
s.strip()によって、文字列の前後にある余分な空白を取り除いてから判定しています。try-exceptブロックを使うことで、変換に失敗した場合でもプログラムがクラッシュせずにFalseを返せるようになっています。
入力
"0.2" "abc" "Hello" "-2.5" "10"
出力
True False False True True
補足:その他の判定方法
try-except 以外にも、以下のような方法で数値判定を行うことができます。
str.isdigit():整数のみを判定したい場合に使えます。ただし、小数点や負の符号には対応していません。- 正規表現(
reモジュール):^[+-]?\d*\.?\d+$のようなパターンで、より柔軟に数値形式を検証できます。
用途に応じて最適な方法を選択するとよいでしょう。
-
PythonでisNumber()関数を実装する方法をわかりやすく解説
はじめに本記事では、Python 3.x(またはそれ以前のバージョン)を使ってisNumber()関数を自前で実装する方法を解説します。この関数は文字列を引数として受け取り、その文字列が数値として解釈できるかどうかに応じて、ブール値のTrueまたはFalseを返します。実装には、try文とexcept文による例外処理の仕組みを活用します。isNumber()関数の実装例それでは、実際のコード例を見ていきましょう。# isNumber()関数の実装 def isNumber(s): if(s[0] == -): s = s[1:] # 例外処理 try:
-
Pythonのid()関数の使い方を徹底解説
この記事では、Python 3.x(およびそれ以前のバージョン)における id() 関数の使い方と仕組みについて詳しく解説します。id() 関数はPython標準ライブラリに組み込まれており、コード実行時に自動的に利用可能になっているため、追加のインポートは不要です。 id()関数の基本 構文 id(<オブジェクト名>) 戻り値 int型 の識別値(ID) id() 関数は、引数をちょうど1つだけ受け取ります。引数には、IDを取得したい対象のオブジェクト名を指定します。返されるIDは、複数の変数が同じデータを参照している場合を除き、各オブジェクトごとに一意の値となります。 このID