Pythonで文字列が数字のみで構成されているかを判定する方法
Pythonで文字列が数字のみかどうかを確認する方法
Pythonでは、文字列が数字(0〜9)だけで構成されているかどうかを簡単に判定できます。代表的な方法として、組み込みメソッド isdigit() を使う方法と、正規表現を使う方法の2つがあります。
方法1:isdigit() メソッドを使う
Pythonには標準で isdigit() という文字列メソッドが用意されています。文字列内のすべての文字が数字(0〜9)であれば True を返し、それ以外の場合は False を返します。
>>> string = '9764135408' >>> string.isdigit() True >>> string = '091-9764135408' >>> string.isdigit() False
上記の例では、数字だけの文字列に対しては True が返されますが、ハイフン(-)などの数字以外の文字が含まれると False になります。電話番号のように区切り文字を含む文字列は、この方法では「数字のみ」とは判定されない点に注意しましょう。
方法2:正規表現を使う
re モジュールを使った正規表現でも、同じチェックを行うことができます。^[0-9]+$ というパターンは、「先頭から末尾まで1文字以上の数字が続く」ことを意味します。
>>> import re
>>> bool(re.match('^[0-9]+$', '9764135408'))
True
>>> bool(re.match('^[0-9]+$', '091-9764135408'))
False
re.match() はマッチオブジェクトまたは None を返すため、bool() で囲むことで結果を真偽値として扱えます。
補足:isdigit() 以外の類似メソッド
Pythonには似た用途のメソッドが他にもあります。用途に応じて使い分けると便利です。
- isdecimal():半角の10進数字(0〜9)のみで構成されている場合に
Trueを返します。最も厳密な判定です。 - isdigit():
isdecimal()に加えて、上付き数字など一部の特殊な数字もTrueと判定します。 - isnumeric():さらに漢数字やローマ数字なども
Trueと判定します。最も広い範囲を受け入れます。
単純に半角数字かどうかを確認したい場合は isdecimal() や正規表現を使い、柔軟に判定したい場合は isdigit() を使うのがおすすめです。
-
Pythonで文字列に英字・数字・アンダースコア・ダッシュのみが含まれているか確認する方法
Pythonで文字列が英字・数字・アンダースコア(_)・ダッシュ(-)のみで構成されているかどうかを判定したい場合、正規表現を使うのが最も一般的で簡潔な方法です。パターン「^[A-Za-z0-9_-]*$」を利用することで、許可された文字以外が含まれていないかを簡単にチェックできます。 正規表現を使った方法 標準ライブラリのreモジュールにあるmatch()関数と、上記の正規表現パターンを組み合わせます。文字列全体がパターンに一致すればTrue、許可されていない文字が1つでも含まれていればFalseが返されます。 import re print(bool(re.match(^[A-Za-z0
-
Pythonで文字列が英数字のみで構成されているか判定する方法【isalnum()と正規表現】
Pythonでは、文字列がアルファベットや数字だけで構成されているかどうかを簡単にチェックできます。主な方法は2つあります。1つは文字列クラスに組み込まれている isalnum() メソッドを使う方法、もう1つは正規表現(regex)を使う方法です。 1. isalnum() メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、その文字列が英数字(アルファベットと数字)のみで構成されている場合に True を、それ以外の場合に False を返します。 使用例:英数字のみの文字列 print(12