サブストリングが別のストリングにあるかどうかを判別する方法


107

私は部分文字列を持っています:

substring = "please help me out"

別の文字列があります:

string = "please help me out so that I could solve this"

Python substringstring使用のサブセットであるかどうかを確認するにはどうすればよいですか?

回答:


169

insubstring in string

>>> substring = "please help me out"
>>> string = "please help me out so that I could solve this"
>>> substring in string
True

10
おっと、pythonは強すぎます。それを行うには関数が必要だと思っていましたが、
組み込みの

私は実際にはPythonを学習した後にJSを学習していました。そのためには、if elseステートメントやその他のものをロードする必要があります。それで、私はPythonでそれがどのように行われたかを思い出したかったのですが、この答えは私に 'もちろん!'と言わせました。:P
Games Brainiac 2013年

@GamesBrainiac実際、JSで同じことを行うには、それだけですstring.indexOf(substring) != -1。詳細はこちら
LasagnaAndroid

見つかったら、はい部分文字列が文字列に存在します。どのようにして文字列の位置を見つけますか。部分文字列が文字列に複数回ある場合はどうなりますか?
yoshiserry 2014年

@yoshiserry inの位置が必要な場合substringstringstring.indexを
MarcoS '27

21
foo = "blahblahblah"
bar = "somethingblahblahblahmeep"
if foo in bar:
    # do something

(ちなみに、string同じ名前のPython標準ライブラリがあるため、変数に名前を付けないようにしてください。大規模なプロジェクトでそれを行うと、人々を混乱させる可能性があるため、このような衝突を回避するのは良い習慣です。)


混乱するだけでなく、その後の文字列を参照するすべてのものを壊します。
rplnt

13

True / False以外のものを探している場合は、次のようにreモジュールを使用するのが最適です。

import re
search="please help me out"
fullstring="please help me out so that I could solve this"
s = re.search(search,fullstring)
print(s.group())

s.group() 「助けてください」という文字列を返します。


1
正規表現検索に関するヒント。
Randall Cook

軽いメモに。正規表現で何かを解決しようとしている場合、2つの問題を解決しようとしています。
Hasan Iqbal 2017

10

Pythonの組み込み関数inor の使用を望まない技術面接でこれを行う方法を検討している場合に、これを追加すると思いますがfind、これは恐ろしいことですが、実際に起こります。

string = "Samantha"
word = "man"

def find_sub_string(word, string):
  len_word = len(word)  #returns 3

  for i in range(len(string)-1):
    if string[i: i + len_word] == word:
  return True

  else:
    return False

2
良い例ですが、身元が間違っています。高速化するにはif len(substring) > len(string) return False、ループ範囲も確認する必要range(len(string)-len(substring))があります。文字列の最後の2文字に3文字の単語が見つからないためです。(数回の繰り返しを節約します)。
AnyOneElse 2015年

9

人々は述べたstring.find()string.index()string.indexOf()のコメントでは、と私は(に応じてそれらをここにまとめPythonドキュメント):

まず、string.indexOf()メソッドはありません。Deviljhoが投稿したリンクは、これがJavaScript関数であることを示しています。

2番目にstring.find()string.index()実際には部分文字列のインデックスを返します。:唯一の違いは、彼らがサブストリングが見つからない状況を処理する方法であるstring.find()リターンを-1しながら、string.index()上げますValueError


5

find()メソッドを試すこともできます。文字列strが文字列に出現するか、文字列の部分文字列に出現するかを決定します。

str1 = "please help me out so that I could solve this"
str2 = "please help me out"

if (str1.find(str2)>=0):
  print("True")
else:
  print ("False")


1
def find_substring():
    s = 'bobobnnnnbobmmmbosssbob'
    cnt = 0
    for i in range(len(s)):
        if s[i:i+3] == 'bob':
            cnt += 1
    print 'bob found: ' + str(cnt)
    return cnt

def main():
    print(find_substring())

main()

指定された文字列で部分文字列「bob」を検索します。
avina k 2015

0

この方法も使用できます

if substring in string:
    print(string + '\n Yes located at:'.format(string.find(substring)))

0

ここに画像の説明を入力してください

find()を使用する代わりに、簡単な方法の1つは、上記の「in」の使用です。

'str'に 'substring'が存在する場合、partが実行されるか、そうでない場合、partが実行されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.