Pythonで文字列に特定の文字のみが含まれているかを確認する方法
Pythonでは、文字列が特定の文字だけで構成されているかどうかを簡単にチェックできます。代表的な方法として、セット(set)を使う方法と正規表現(regex)を使う方法の2つがあります。それぞれ具体的なコード例とともに解説します。
方法1:セット(set)を使った確認
まず、許可したい文字の集合(セット)を宣言します。そして、検証したい文字列から作ったセットが、その許可セットの部分集合になっているかを確認します。
例えば、文字列に「1」「2」「3」「4」のみが含まれているかをチェックしたい場合は、次のように書きます。
allowed_chars = set('1234')
validation_string = '121'
if set(validation_string).issubset(allowed_chars):
print(True)
else:
print(False)実行結果
True
issubset()メソッドは、左辺のセットが右辺のセットの部分集合である場合に True を返します。つまり、検証文字列に含まれるすべての文字が許可セット内に存在していれば、その文字列は指定した文字のみで構成されていると判断できます。
方法2:正規表現を使った確認
同じ処理は正規表現でも実現できます。「1」「2」「3」「4」だけにマッチさせたい場合は、パターン ^[1234]+$ を使って re.match() を呼び出します。
import re
print(bool(re.match('^[1234]+$', '123abc')))
print(bool(re.match('^[1234]+$', '123')))実行結果
False True
1行目は「abc」という許可されていない文字が含まれているため False、2行目はすべて許可された文字で構成されているため True が出力されます。
注意点
正規表現を使用する際は、以下の点に気をつけましょう。
- 正規表現では
. * + ? ^ $ ( ) [ ] { } | \などの記号が特別な意味を持つため、これらを通常の文字として扱いたい場合はバックスラッシュでエスケープする必要があります。 re.match()はマッチオブジェクト、またはマッチしなかった場合はNoneを返します。結果を真偽値として扱うには、サンプルのようにbool()で変換すると便利です。
-
Pythonで回文を判定する方法:文字列が回文かどうかを確認する
回文とは?回文(パリンドローム)とは、左から読んでも右から読んでも同じになる文字列のことです。言い換えると、文字列を逆順に並べ替えたときに元の文字列と完全に一致するものを指します。例えば、「civic」や「madam」は回文です。一方、「cat」は回文ではありません。逆順にすると「tac」となり、元の文字列「cat」と一致しないためです。この記事では、入力された文字列が回文かどうかを判定するプログラムの書き方を、2つの方法で解説します。方法1:文字列の逆順を求めて比較するこの方法のポイントは、文字列の逆順を作成することです。逆順の取得にはさまざまな方法がありますが、ここでは最もシンプルなスライ
-
【Python】文字列がすべてユニークな文字で構成されているか判定する方法
本記事では、与えられた文字列に含まれる文字がすべて一意(ユニーク)であるかどうかを判定するPythonプログラムについて、その解法とアプローチをわかりやすく解説します。 問題の概要 文字列が入力として与えられたとき、その文字列に含まれるすべての文字が重複なく一意であるかどうかを判定します。たとえば「abcde」はすべて異なる文字で構成されているためTrue、「tutorialspoint」のように同じ文字が複数回出現する場合はFalseとなります。 アプローチ この問題は、以下のような手順で効率的に解くことができます。 ブール値の配列を用意する: 各インデックス i が「アルファベット(AS