Pythonで文字列が指定したサフィックス(接尾辞)リストのいずれかで終わるかどうかを確認する方法
endswith()メソッドを使う方法
Pythonの文字列クラスには、endswith()メソッドが用意されています。このメソッドは、検索したい文字列のタプルを受け取り、文字列オブジェクトに対して呼び出します。以下のように使用できます。
string = 'core java'
print(string.endswith(('txt', 'xml', 'java', 'orld')))
実行結果
True
タプル内のいずれかのサフィックスで文字列が終わっていればTrueが返され、どれにも該当しなければFalseが返されます。シンプルな判定であれば、この方法が最も可読性が高くおすすめです。
正規表現(re.search)を使う方法
文字列が指定したサフィックスのリストのいずれかで終わっているかどうかを調べるには、別の方法としてreモジュール(正規表現)のre.search()を使うこともできます。正規表現では$が行末を表し、グループ化と|(OR)記号を使って複数のサフィックスを区切ります。
import re
string = 'core java'
print(bool(re.search('(java|xml|py|orld)$', string)))
print(bool(re.search('(java|xml|py|orld)$', 'core java')))
print(bool(re.search('(java|xml|py)$', 'Hello world')))
実行結果
True True False
re.search()はマッチした場合にマッチオブジェクトを返し、マッチしなかった場合はNoneを返します。そのため、判定結果を明確にするには、bool()を使って真偽値に変換する必要があります。
使い分けのポイント
単純にサフィックスを判定するだけならendswith()で十分ですが、大文字小文字を無視したい場合や、より柔軟なパターンマッチングが必要な場合には正規表現が有効です。たとえばre.IGNORECASEフラグを組み合わせれば、大文字小文字を区別せずに判定することも可能です。
-
Pythonで文字列に英字と数字がそれぞれ1つ以上含まれているか判定する方法
Pythonである文字列に「少なくとも1つの英字」と「少なくとも1つの数字」の両方が含まれているかどうかを判定したい場面は、パスワードのバリデーションなどでよくあります。最も手軽な方法は正規表現(regular expressions)を使うことです。re.match(regex, string)を利用すれば、指定した文字列に英字と数字が両方存在するかを一度にチェックできます。正規表現を使った判定方法以下の例では、先読み(lookahead)と呼ばれる?=構文を使って、文字列中に英字と数字がそれぞれ1つ以上あることを確認しています。import re print(bool(re.match(
-
Pythonで文字列が指定した接尾辞(サフィックス)で終わっているかどうかを確認する方法
endswith()メソッドを使う方法Pythonでは、文字列クラスに用意されている endswith() メソッドを使うことで、文字列が特定の接尾辞(サフィックス)で終わっているかどうかを簡単に確認できます。このメソッドは、検索したい接尾辞の文字列を引数として受け取り、文字列オブジェクトに対して呼び出します。以下のように使用します。string = C:/Users/TutorialsPoint1/~.py print(string.endswith(.py))実行結果:Trueこの例では、ファイルパスの文字列が .py という拡張子で終わっているため、True が返されます。もし終わってい