Pythonで文字列が英数字のみで構成されているか判定する方法【isalnum()と正規表現】
Pythonでは、文字列がアルファベットや数字だけで構成されているかどうかを簡単にチェックできます。主な方法は2つあります。1つは文字列クラスに組み込まれている isalnum() メソッドを使う方法、もう1つは正規表現(regex)を使う方法です。
1. isalnum() メソッドを使う方法
Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、その文字列が英数字(アルファベットと数字)のみで構成されている場合に True を、それ以外の場合に False を返します。
使用例:英数字のみの文字列
print('123abc'.isalnum())
出力:
True
使用例:記号を含む文字列
print('123#$%abc'.isalnum())
出力:
False
2. 正規表現(re.match)を使う方法
同じ結果は、正規表現モジュール re を使っても得られます。英数字にマッチさせるには、パターン "^[a-zA-Z0-9]+$" を指定して re.match(regex, string) を呼び出します。
使用例:英数字のみの文字列
import re
print(bool(re.match('^[a-zA-Z0-9]+$', '123abc')))
出力:
True
使用例:記号を含む文字列
import re
print(bool(re.match('^[a-zA-Z0-9]+$', '123abc#$%')))
出力:
False
bool() で変換する理由
re.match はマッチ結果をオブジェクトとして返します。マッチが存在するかどうかを確認するには、bool() を使ってこのオブジェクトを真偽値に変換します。マッチした場合は True、しなかった場合は None が返されるため、bool() による変換で明確に判定できます。
まとめ
- シンプルに判定したい場合は
isalnum()メソッドが便利です。 - より柔軟な条件(特定の文字種の組み合わせなど)を扱いたい場合は正規表現が有効です。
re.matchの戻り値はbool()で変換してから利用しましょう。
-
Pythonで文字列に英字と数字がそれぞれ1つ以上含まれているか判定する方法
Pythonである文字列に「少なくとも1つの英字」と「少なくとも1つの数字」の両方が含まれているかどうかを判定したい場面は、パスワードのバリデーションなどでよくあります。最も手軽な方法は正規表現(regular expressions)を使うことです。re.match(regex, string)を利用すれば、指定した文字列に英字と数字が両方存在するかを一度にチェックできます。正規表現を使った判定方法以下の例では、先読み(lookahead)と呼ばれる?=構文を使って、文字列中に英字と数字がそれぞれ1つ以上あることを確認しています。import re print(bool(re.match(
-
Pythonで部分文字列が文字列に含まれているか確認する方法(in演算子とfindメソッド)
Pythonでは、ある文字列が別の文字列の部分文字列(サブストリング)として含まれているかどうかを簡単に確認できます。最も基本的な方法は、in 演算子を使うことです。in 演算子を使った判定方法in 演算子は、左辺の文字列が右辺の文字列に含まれている場合に True を、含まれていない場合に False を返します。以下はその使用例です。print(ello in hello world)実行結果:Trueこのように、ello は hello world の中に含まれているため、True が出力されます。find() メソッドで位置(インデックス)を取得する部分文字列が含まれているかどうかに加