Как определить, находится ли подстрока в другой строке

У меня есть подстрока:

substring = "please help me out"

У меня есть еще одна строка:

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

Как найти, если substring является подмножеством string с использованием Python?

Ответ 1

с in: substring in string:

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

Ответ 2

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

(Кстати, попробуйте не называть переменную string, так как там есть стандартная библиотека Python с тем же именем. Вы можете смутить людей, если вы сделаете это в большом проекте, поэтому избегайте подобных конфликтов привычка попасть.)

Ответ 3

Если вы ищете больше, чем 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() вернет строку "пожалуйста, помогите мне".

Ответ 4

Думаю, я бы добавил это, если вы смотрите, как это сделать для технического интервью, где они не хотят, чтобы вы использовали встроенную функцию Python in или 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

Ответ 5

Люди упомянули string.find(), string.index() и string.indexOf() в комментариях, и я суммирую их здесь (в соответствии с Документацией на Python):

Прежде всего, не существует метода string.indexOf(). Ссылка, размещенная Deviljho, показывает, что это функция JavaScript.

Во-вторых, string.find() и string.index() фактически возвращают индекс подстроки. Единственное различие заключается в том, как они обрабатывают не найденную ситуацию: string.find() возвращает -1, а string.index() вызывает ValueError.

Ответ 6

Вы также можете попробовать метод 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")

Ответ 7

In [7]: substring = "please help me out"

In [8]: string = "please help me out so that I could solve this"

In [9]: substring in string
Out[9]: True

Ответ 8

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()

Ответ 9

Можно также использовать этот метод

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