Python で文字列が別の文字列を含むかどうかを確認する方法

文字列の操作は、どんなプログラミング言語でもよく行われるタスクです。Pythonには、文字列が別の文字列を含んでいるかどうかをチェックするための2つの一般的な方法があります。

Pythonで文字列が別の文字列を含んでいるかを確認する

Pythonの文字列は、in演算子をサポートしています。そのため、文字列が別の文字列の一部であるかどうかをチェックするために使用することができます。 in演算子の構文は次のとおりです:

sub in str

「sub」文字列が「str」の一部である場合はTrueを返し、そうでない場合はFalseを返します。Pythonでin演算子を使用するいくつかの例を見てみましょう。

str1 = 'I love Python Programming'

str2 = 'Python'

str3 = 'Java'

print(f'"{str1}" contains "{str2}" = {str2 in str1}')
print(f'"{str1}" contains "{str2.lower()}" = {str2.lower() in str1}')
print(f'"{str1}" contains "{str3}" = {str3 in str1}')

if str2 in str1:
    print(f'"{str1}" contains "{str2}"')
else:
    print(f'"{str1}" does not contain "{str2}"')

出力:

"I love Python Programming" contains "Python" = True
"I love Python Programming" contains "python" = False
"I love Python Programming" contains "Java" = False
"I love Python Programming" contains "Python"

Pythonでf-接頭辞付き文字列が馴染みがない場合は、それはPython 3.6で導入された新しい文字列フォーマットの方法です。詳細については、Pythonにおけるf-stringsで説明されています。

in演算子を使用すると、内部的には__contains__()関数が呼び出されます。この関数を直接使用することもできますが、可読性のためにはin演算子を使用することを推奨します。

s = 'abc'

print('s contains a =', s.__contains__('a'))
print('s contains A =', s.__contains__('A'))
print('s contains X =', s.__contains__('X'))

出力:

s contains a = True
s contains A = False
s contains X = False

文字列が他の部分文字列を含んでいるかを確認するためにfind()を使用する方法

私たちはまた、string find()関数を使用して、文字列が部分文字列を含んでいるかどうかを確認することができます。この関数は、部分文字列が見つかった最初のインデックス位置を返し、それ以外の場合は-1を返します。

str1 = 'I love Python Programming'

str2 = 'Python'

str3 = 'Java'

index = str1.find(str2)
if index != -1:
    print(f'"{str1}" contains "{str2}"')
else:
    print(f'"{str1}" does not contain "{str2}"')

index = str1.find(str3)
if index != -1:
    print(f'"{str1}" contains "{str3}"')
else:
    print(f'"{str1}" does not contain "{str3}"')

出力:

"I love Python Programming" contains "Python"
"I love Python Programming" does not contain "Java"

Pythonの完全なスクリプトやその他のPythonの例については、私たちのGitHubリポジトリをご覧ください。

Source:
https://www.digitalocean.com/community/tutorials/python-check-if-string-contains-another-string