Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列が小文字のみで構成されているか判定する2つの方法

Pythonでは、文字列がすべて小文字で構成されているかどうかを簡単に判定できます。主な方法は2つあり、1つ目は文字列メソッドの islower() を使う方法、2つ目は正規表現を使う方法です。それぞれの特徴と違いを見ていきましょう。

方法1:islower() メソッドを使う

islower() は、文字列内の英字がすべて小文字である場合に True を返します。数字やスペースなどの英字以外の文字は判定の対象外となる点に注意してください。

print('Hello world'.islower())
print('hello world'.islower())

出力:

False
True

「Hello world」には大文字の「H」が含まれているため False となり、すべて小文字の「hello world」は True となります。

方法2:正規表現を使う

正規表現でも同じ判定が可能です。小文字アルファベットのみにマッチさせるには、re.match() にパターン "^[a-z]+$" を指定します。まず re モジュールをインポートすることを忘れないようにしましょう。

import re

print(bool(re.match('^[a-z]+$', '123abc')))
print(bool(re.match('^[a-z]+$', 'abc')))

出力:

False
True

パターン "^[a-z]+$" は「文字列の先頭から末尾まで、a〜z の小文字アルファベットだけで構成されている」ことを意味します。そのため、数字を含む「123abc」は False、純粋な小文字のみの「abc」は True になります。

2つの方法の重要な違い

この2つのアプローチには挙動の違いがあります。islower() は英字以外の文字(数字・スペース・記号など)を無視して判定するため、スペースを含む文字列でも True を返します。一方、正規表現の "^[a-z]+$" は文字列全体が小文字アルファベットのみであることを要求するため、スペースや数字が1つでも含まれるとマッチしません。

import re

print('hello world'.islower())                    # True(スペースは無視される)
print(bool(re.match('^[a-z]+$', 'hello world')))  # False(スペースがあるため不一致)

まとめ

「大文字が含まれていないかどうか」を手軽に確認したい場合は islower() が便利です。一方、「a〜z の小文字アルファベットだけで厳密に構成されていること」をチェックしたい場合は正規表現が適しています。用途に応じて使い分けることで、意図した通りの文字列バリデーションが実現できます。

  1. Pythonで文字列が英数字のみかどうかを判定する方法【isalnum()と正規表現】

    Pythonでは、文字列が英数字(アルファベットと数字)のみで構成されているかどうかを簡単に判定できます。主な方法は2つあります。文字列クラスに組み込まれている isalnum() メソッドを使う方法と、正規表現を使う方法です。 isalnum()メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、文字列が英数字のみで構成されている場合に True を、記号などが含まれる場合には False を返します。 >>> 123abc.isalnum() True >>>

  2. Pythonで文字列に英字・数字・アンダースコア・ダッシュのみが含まれているか確認する方法

    Pythonで文字列が英字・数字・アンダースコア(_)・ダッシュ(-)のみで構成されているかどうかを判定したい場合、正規表現を使うのが最も一般的で簡潔な方法です。パターン「^[A-Za-z0-9_-]*$」を利用することで、許可された文字以外が含まれていないかを簡単にチェックできます。 正規表現を使った方法 標準ライブラリのreモジュールにあるmatch()関数と、上記の正規表現パターンを組み合わせます。文字列全体がパターンに一致すればTrue、許可されていない文字が1つでも含まれていればFalseが返されます。 import re print(bool(re.match(^[A-Za-z0