Как определить, находится ли подстрока в другой строке - PullRequest
104 голосов
/ 09 сентября 2011

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

substring = "please help me out"

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

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

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

Ответы [ 10 ]

166 голосов
/ 09 сентября 2011

с in: substring in string:

>>> substring = "please help me out"
>>> string = "please help me out so that I could solve this"
>>> substring in string
True
20 голосов
/ 09 сентября 2011
foo = "blahblahblah"
bar = "somethingblahblahblahmeep"
if foo in bar:
    # do something

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

13 голосов
/ 23 ноября 2011

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

9 голосов
/ 27 марта 2015

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

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

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

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

5 голосов
/ 27 сентября 2014

Вы также можете попробовать метод 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 голос
/ 23 июня 2015
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()
1 голос
/ 09 сентября 2011
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
0 голосов
/ 07 мая 2018

enter image description here

Вместо использования find (), одним из простых способов является использование «in», как указано выше.

if «substring»присутствует в 'str' тогда, если часть будет выполнена, иначе часть будет выполнена.

0 голосов
/ 21 ноября 2016

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

if substring in string:
    print(string + '\n Yes located at:'.format(string.find(substring)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...