logo

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

この記事では、 パイソン string には、Python の別の文字列または部分文字列が含まれています。 2 つの文字列が指定された場合、指定された文字列内に部分文字列が存在するかどうかを確認します。

  Input:   Substring = 'geeks'   String='geeks for geeks'   Output:   yes   Input:   Substring = 'geek'  String='geeks for geeks'   Output:   yes   Explanation:   In this, we are checking if the substring is present in a given string or not.>

文字列内の Python 部分文字列

部分文字列のチェックは、Python で最もよく使用されるタスクの 1 つです。 Python は、部分文字列を含む文字列をチェックするために、find()、index()、count() などの多くのメソッドを使用します。最も効率的で高速な方法は、 比較演算子として使用される演算子。ここでは、さまざまなアプローチについて説明します。



  • If-Else の使用
  • In 演算子の使用
  • を使用して確認する split() メソッド
  • 使用する find() メソッド
  • 使用する count() メソッド
  • 使用する Index() メソッド
  • リスト内包表記の使用
  • ラムダ関数の使用
  • __contains__ マジック クラスを使用します。
  • スライス機能を使う
  • 使用する 正規表現
  • 演算子 contains() メソッドを使用する

チェック 文字列内の Python 部分文字列 If-Else を使用する

Python では、次のコマンドを使用して、文字列内の Python 部分文字列が存在するかどうかを確認できます。 if-else 声明。 if-else ステートメントを使用すると、条件が true か false に基づいて、さまざまなコード ブロックを条件付きで実行できます。

Python3








# Take input from users> MyString1>=> 'A geek in need is a geek indeed'> > if> 'need'> in> MyString1:> >print>(>'Yes! it is present in the string'>)> else>:> >print>(>'No! it is not present'>)>

>

>

出力

Yes! it is present in the string>

時間計算量 : の上)
補助スペース: ○(1)

を使用して文字列内の Python 部分文字列をチェックする オペレータ内

Python では、次のコマンドを使用して、特定の文字列に部分文字列が存在するかどうかを簡単に確認できます。in>オペレーター。のin>演算子は、シーケンス内に特定の値 (部分文字列) が存在するかどうかをテストするために使用されます。

Python3




ゴビンダ俳優

text>=> 'Geeks welcome to the Geek Kingdom!'> > if> 'Geek'> in> text:> >print>(>'Substring found!'>)> else>:> >print>(>'Substring not found!'>)> > if> 'For'> in> text:> >print>(>'Substring found!'>)> else>:> >print>(>'Substring not found!'>)>

>

>

出力

Substring found! Substring not found!>

時間計算量 : の上)
補助スペース: ○(1)

Split() メソッドを使用して文字列内の Python 部分文字列をチェックする

文字列内のPythonの部分文字列が存在するか、または使用していないことを確認しています スプリット()。 まず、指定された文字列を単語に分割して変数 s に格納し、次に if 条件を使用して、指定された文字列に部分文字列が存在するかどうかを確認します。

Python3




# input strings str1 and substr> string>=> 'geeks for geeks'> # or string=input() ->ユーザーからの入力を受け取る>>' => 'geeks'> # or substring=input()> > # splitting words in a given string> s>=> string.split()> > # checking condition> # if substring is present in the given string then it gives output as yes> if> substring>in> s:> >print>(>'yes'>)> else>:> >print>(>'no'>)>

>

>

出力

Yes>

時間計算量 : O(n + m)
補助スペース: の上)

Find() メソッドを使用して文字列内の Python 部分文字列をチェックする

すべての単語を繰り返しチェックできますが、Python には組み込み関数が用意されています。 探す() これは文字列内に部分文字列が存在するかどうかをチェックします。これは 1 行で実行されます。 find() 関数は、見つからない場合は -1 を返し、見つからない場合は最初に見つかったものを返すため、この関数を使用するとこの問題は解決できます。

Python3

Javaでの文字列比較




def> check(string, sub_str):> >if> (string.find(sub_str)>=>=> ->1>):> >print>(>'NO'>)> >else>:> >print>(>'YES'>)> > > # driver code> string>=> 'geeks for geeks'> sub_str>=> 'geek'> check(string, sub_str)>

>

>

出力

Yes>

時間計算量 : の上)
補助スペース: ○(1)

Count() メソッドを使用して文字列内の Python 部分文字列をチェックする

文字列内の特定の部分文字列の出現数をカウントすることもできます。その後、Python を使用することもできます。 カウント() 方法。部分文字列が見つからない場合は、yes が出力され、それ以外の場合は no が出力されます。

Python3




def> check(s2, s1):> >if> (s2.count(s1)>>>0>):> >print>(>'YES'>)> >else>:> >print>(>'NO'>)> > > s2>=> 'A geek in need is a geek indeed'> s1>=> 'geeks'> check(s2, s1)>

>

>

出力

No>

時間計算量 : の上)
補助スペース: ○(1)

Index() メソッドを使用して文字列内の Python 部分文字列をチェックする

Index() メソッド パラメータとして渡された部分文字列の開始インデックスを返します。ここ 部分文字列 はインデックス 16 に存在します。

Python3




any_string>=> 'Geeks for Geeks substring '> start>=> 0> end>=> 1000> print>(any_string.index(>'substring'>, start, end))>

>

>

出力

16>

時間計算量 : の上)
補助スペース: ○(1)

Javaで文字列をintに変換する

文字列 u の Python 部分文字列をチェックする 歌うリストの理解

を使用して文字列内のPythonの部分文字列をチェックするには リストの内包表記 。リスト内包表記を使用すると、文字列内の部分文字列をチェックし、それが単語のいずれかに存在するかどうかを判断する簡潔な方法が提供されます。

Python3




s>=>'geeks for geeks'> s2>=>'geeks'> print>([>'yes'> if> s2>in> s>else> 'no'>])>

>

>

出力

['Yes']>

時間計算量 : の上)
補助スペース: ○(1)

文字列内の Python 部分文字列をチェックする Lambda関数を使用する

を使用して文字列内のPythonの部分文字列をチェックするには ラムダ関数 。ラムダ関数を使用すると、文字列内の部分文字列をチェックし、それが単語のいずれかに存在するかどうかを判断する簡潔な方法が提供されます。

Python3




mysql 表示ユーザー
s>=>'geeks for geeks'> s2>=>'geeks'> x>=>list>(>filter>(>lambda> x: (s2>in> s),s.split()))> print>([>'yes'> if> x>else> 'no'>])>

>

>

出力

['Yes']>

時間計算量 : O(n + m)
補助スペース: オ(メートル)

__contains__ マジック クラスを使用して、文字列内の Python 部分文字列を確認します。

文字列内のPythonの部分文字列をチェックするには、__contains__()を使用します。このメソッドは、文字列が他の文字列に存在するかどうかを確認するために使用されます。

Python3




a>=> [>'Geeks-13'>,>'for-56'>,>'Geeks-78'>,>'xyz-46'>]> for> i>in> a:> >if> i.__contains__(>'Geeks'>):> >print>(f>'Yes! {i} is containing.'>)>

>

>

出力

Yes! Geeks-13 is containing. Yes! Geeks-78 is containing.>

時間計算量 : の上)
補助スペース: ○(1)

文字列内の Python 部分文字列をチェックする スライスを使用する

スライスを使用して文字列内のPythonの部分文字列をチェックします。この実装では、ループを使用して、文字列内の部分文字列のすべての可能な開始インデックスを反復処理し、次に、 スライス 現在の部分文字列を部分文字列引数と比較します。現在の部分文字列が部分文字列引数と一致する場合、関数は True を返し、それ以外の場合は False を返します。

Python3




def> is_substring(string, substring):> >for> i>in> range>(>len>(string)>-> len>(substring)>+> 1>):> >if> string[i:i>+>len>(substring)]>=>=> substring:> >return> True> >return> False> string>=> 'A geeks in need is a geek indeed'> substring>=> 'geeks'> print>(is_substring(string,substring))>

>

>

出力

True>

時間計算量 : O(n*m)
ここで、n は文字列引数の長さ、m は部分文字列引数の長さです。これは、関数がループを使用して文字列内の部分文字列のすべての開始インデックスを反復処理し、次にスライスを使用して現在の部分文字列を部分文字列引数と比較するためです。最悪の場合、ループは n-m+1 回反復され、各スライス操作には O(m) 時間がかかり、合計時間計算量は O((n-m+1)m) = O(nm) になります。 。
補助スペース: ○(1)

正規表現を使用して文字列内の Python 部分文字列をチェックする

Python では、次を使用して文字列内の Python 部分文字列が存在することを確認できます。 正規表現 。正規表現は強力なパターン マッチング機能を提供し、部分文字列マッチングのための複雑な検索パターンを定義できます。正規表現を使用して文字列内の部分文字列をチェックする方法を次に示します。

Python3




Cプログラミングのサンプルプログラム

import> re> > MyString1>=> 'A geek in need is a geek indeed'> > if> re.search(>'need'>, MyString1):> >print>(>'Yes! it is present in the string'>)> else>:> >print>(>'No! it is not present'>)>

>

>

出力

Yes! it is present in the string>

時間計算量: O(n)。n は入力文字列の長さです。
空間の複雑さ: O(1)、追加のスペースを使用していないため

文字列内の Python 部分文字列をチェックする Operator.contains() メソッドを使用する

このアプローチが使用される演算子.contains()部分文字列が文字列に存在するかどうかを確認するメソッド 条件が True の場合は、yes を出力し、それ以外の場合は、no を出力します

Python3




#Python program to check if a substring is present in a given string> import> operator as op> s>=>'geeks for geeks'> s2>=>'geeks'> if>(op.contains(s,s2)):> >print>(>'yes'>)> else>:> >print>(>'no'>)>

>

>

出力

Yes>

時間計算量 : の上)
補助スペース: ○(1)