Python: 文字列に部分文字列が含まれているかどうかを確認する

文字列に部分文字列が含まれているかどうかを確認すると、条件文を一般化し、より柔軟なコードを作成するのに役立ちます。さらに、ドメイン モデルによっては、文字列自体がフィールドをエンコードしている場合、文字列に部分文字列が含まれているかどうかを確認することで、オブジェクトのフィールドを推測できる場合もあります。

このガイドでは、次のことを見ていきます。 文字列に部分文字列が含まれているかどうかを確認する方法 Pythonで。

  in 演算子

Python 文字列に部分文字列が含まれているかどうかを確認する最も簡単な方法は、 in オペレータ。

  in 演算子は、Python でデータ構造のメンバーシップをチェックするために使用されます。ブール値 (次のいずれか) を返します。 True or False)。 Python で文字列に部分文字列が含まれているかどうかを確認するには、 in 演算子を使用する場合は、単にスーパーストリングに対して呼び出します。

fullstring = "StackAbuse"
substring = "tack"

if substring in fullstring:
    print("Found!")
else:
    print("Not found!")

この演算子は、オブジェクトの呼び出しの短縮形です。 __contains__ メソッドであり、項目がリストに存在するかどうかを確認するのにも適しています。注目に値するのは、 null セーフではない、それで、私たちの場合 fullstring を指していました None、例外がスローされます。

TypeError: argument of type 'NoneType' is not iterable

これを回避するには、まず、それが次のことを指しているかどうかを確認します。 None か否か:

fullstring = None
substring = "tack"

if fullstring != None and substring in fullstring:
    print("Found!")
else:
    print("Not found!")

  文字列.index() 方法

PythonのString型には以下のメソッドがあります。 index() これを使用して、文字列内で最初に出現する部分文字列の開始インデックスを見つけることができます。

部分文字列が見つからない場合は、 ValueError 例外がスローされます。これは try-excel-else ブロックで処理できます。

fullstring = "StackAbuse"
substring = "tack"

try:
    fullstring.index(substring)
except ValueError:
    print("Not found!")
else:
    print("Found!")

このメソッドは、完全な文字列内での部分文字列の存在だけではなく、部分文字列の位置も知る必要がある場合に便利です。メソッド自体はインデックスを返します。

print(fullstring.index(substring))

ただし、文字列に部分文字列が含まれているかどうかを確認するため、これは冗長なアプローチです。

String.find() メソッド

String クラスには別のメソッドがあります。 find() よりも使いやすいのは index(), 主に、例外の処理について心配する必要がないからです。

If find() 一致するものが見つからない場合は -1 を返し、それ以外の場合は、より大きな文字列内の部分文字列の左端のインデックスを返します。

ベストプラクティス、業界で認められた標準、および含まれているチートシートを含む、Gitを学習するための実践的で実用的なガイドを確認してください。 グーグルGitコマンドを停止し、実際に 学ぶ それ!

fullstring = "StackAbuse"
substring = "tack"

if fullstring.find(substring) != -1:
    print("Found!")
else:
    print("Not found!")

当然のことながら、次と同じ検索を実行します。 index() そして、親文字列内の部分文字列の先頭のインデックスを返します。

print(fullstring.find(substring))

正規表現 (RegEx)

正規表現は、文字列のパターン マッチングをチェックするための、より柔軟な (より複雑ではあるが) 方法を提供します。正規表現を使用すると、以前のような単純なチェックではなく、はるかに大きな検索スペースを通じて柔軟で強力な検索を実行できます。

Python には、正規表現用の組み込みモジュールが付属しています。 reを選択します。 re モジュールには という関数が含まれています search()、これを使用して部分文字列パターンと一致させることができます。

from re import search

fullstring = "StackAbuse"
substring = "tack"

if search(substring, fullstring):
    print "Found!"
else:
    print "Not found!"

この方法は、大文字と小文字を区別しないマッチングなど、より複雑なマッチング関数が必要な場合、または大規模な検索スペースを扱う場合に最適です。それ以外の場合は、単純な部分文字列一致の使用例では、正規表現の複雑さと速度の低下を回避する必要があります。

著者について

この記事は、コードを通じて他の人の生活を向上させることに情熱を持ったソフトウェア コンサルタント兼開発者である Jacob Stopak によって書かれました。ジェイコブはその創造者です 初期コミット – 好奇心旺盛な開発者がお気に入りのプログラムがどのようにコーディングされているかを学ぶのを支援することに特化したサイト。注目のプロジェクトは人々を助ける Gitを学ぶ コードレベルで。

タイムスタンプ:

より多くの スタックアバス