Pythonで文字列が10進数字のみで構成されているか判定する方法
Pythonでは、文字列が10進数字(0〜9)だけで構成されているかどうかを確認する方法がいくつかあります。ここでは、代表的な3つの方法を紹介します。
1. isdigit()メソッドを使う
最もシンプルな方法は、文字列クラスに組み込まれている isdigit() メソッドを使うことです。このメソッドは、文字列内のすべての文字が数字であり、かつ少なくとも1文字以上存在する場合に True を返し、それ以外の場合は False を返します。
>>> "12345".isdigit() True >>> "12345a".isdigit() False
ただし、isdigit() には注意点があります。小数点(ピリオド)やマイナス記号は数字として扱われないため、浮動小数点数の文字列(例:"12.345")に対しては False を返してしまいます。
2. float()関数とtry-exceptを使う
浮動小数点数にも対応させたい場合は、文字列を float() に渡してみて、例外が発生するかどうかで判定する方法が有効です。
def isfloat(value):
try:
float(value)
return True
except ValueError:
return False
print(isfloat('12.345'))
print(isfloat('12a'))
実行結果は以下のようになります。
True False
この方法なら、整数・小数・負の値なども柔軟に判定できます。ただし、float() は「inf」や「nan」などの特殊な文字列も受け付けるため、厳密な数字チェックが必要な場合は後述の正規表現の方が適しています。
3. 正規表現(reモジュール)を使う
より厳密なパターンマッチングを行いたい場合は、正規表現を使用するのがおすすめです。10進数の小数にマッチさせるには、re.match(regex, string) を次のようなパターンで呼び出します:^\d+?\.\d+?$
>>> import re
>>> bool(re.match("^\d+?\.\d+?$", '123abc'))
False
>>> bool(re.match("^\d+?\.\d+?$", '12.345'))
True
このパターンは「整数部.小数部」という形式の文字列のみにマッチします。用途に応じてパターンを調整すれば、整数のみや符号付きの数値など、さまざまな形式に対応できます。
まとめ
- isdigit():整数の数字列のみを手軽に判定したい場合に最適
- float() + try-except:小数や負の値も含めて数値として妥当か確認したい場合に便利
- 正規表現:特定の形式(例:「整数.小数」)を厳密に検証したい場合に有効
目的に応じてこれらの方法を使い分けることで、文字列の数値判定を正確かつ効率的に行うことができます。
-
Swiftで文字列に特殊文字が含まれているか判定する2つの方法
Swiftで文字列に特殊文字が含まれているかどうかを確認したい場合、if文やswitch文による条件分岐でも実現できますが、その場合は膨大な条件式を記述する必要があり、コーディングにも実行速度にも大きな負担となってしまいます。そこで本記事では、正規表現を使う方法と、Swift標準のCharacterSetを活用する方法の2通りを、具体的なコード例とともにわかりやすく解説します。 方法1:正規表現を使って判定する まずはString型のextensionを作成し、特殊文字の有無を判定するプロパティを追加しましょう。 extension String { var containsSpeci
-
【Python】文字列がすべてユニークな文字で構成されているか判定する方法
本記事では、与えられた文字列に含まれる文字がすべて一意(ユニーク)であるかどうかを判定するPythonプログラムについて、その解法とアプローチをわかりやすく解説します。 問題の概要 文字列が入力として与えられたとき、その文字列に含まれるすべての文字が重複なく一意であるかどうかを判定します。たとえば「abcde」はすべて異なる文字で構成されているためTrue、「tutorialspoint」のように同じ文字が複数回出現する場合はFalseとなります。 アプローチ この問題は、以下のような手順で効率的に解くことができます。 ブール値の配列を用意する: 各インデックス i が「アルファベット(AS