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

胡金庫 2023年10月10日
  1. 文字列にサブストリングが含まれているかどうかを確認する in 演算子
  2. 文字列に部分文字列が含まれているかどうかを確認する str.find() メソッド
  3. str.index() メソッド
  4. 部分文字列チェックソリューション
Python で文字列に部分文字列が含まれているかどうかを確認する方法

与えられた文字列に特定の部分文字列が含まれているかどうかを確認する必要があることはよくあります。ここにいくつかのメソッドをリストし、実行時のパフォーマンスを比較して最も効率的なメソッドを選択します。

文字列を受け取ります-指定された文字列として It is a given string であり、given はチェックするサブ文字列です。

文字列にサブストリングが含まれているかどうかを確認する in 演算子

in 演算子は、メンバーシップチェック演算子です。x in y は、xy のメンバーである場合、つまり yx を含む場合、True と評価されます。

文字列 y が部分文字列 x を含む場合、True を返します。

>>> "given" in "It is a given string"
True
>>> "gaven" in "It is a given string"
False

in オペレータのパフォーマンス

import timeit


def in_method(given, sub):
    return sub in given


print(min(timeit.repeat(lambda: in_method("It is a given string", "given"))))
0.2888628

文字列に部分文字列が含まれているかどうかを確認する str.find() メソッド

findstring の組み込みメソッドです-str.find(sub)

部分文字列 sub が見つかった str の最下位インデックスを返します。sub が見つからなかった場合は -1 を返します。

>>> givenStr = 'It is a given string'
>>> givenStr.find('given')
8
>>> givenStr.find('gaven')
-1

str.find() メソッドのパフォーマンス

import timeit


def find_method(given, sub):
    return given.find(sub)


print(min(timeit.repeat(lambda: find_method("It is a given string", "given"))))
0.42845349999999993

str.index() メソッド

str.index(sub) is a string built-in method that returns the lowest index in str where sub is found. It will raise ValueError when the substring sub is not found.

>>> givenStr = 'It is a given string'
>>> givenStr.index('given')
8
>>> givenStr.index('gaven')
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    givenStr.index('gaven')
ValueError: substring not found

str.index() メソッドのパフォーマンス

import timeit


def find_method(given, sub):
    return given.find(sub)


print(min(timeit.repeat(lambda: find_method("It is a given string", "given"))))
0.457951

部分文字列チェックソリューション

  1. in 演算子は、指定された文字列に部分文字列が存在するかどうかを確認するために使用するものです。
  2. str.find()str.index() も使用できますが、パフォーマンスが悪いため最適ではありません
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - Python String