web-dev-qa-db-fra.com

Comment déterminer si une sous-chaîne est dans une chaîne différente

J'ai une sous-chaîne:

substring = "please help me out"

J'ai une autre ficelle:

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

Comment savoir si substring est un sous-ensemble de string utilisant Python?

103
sunny

avec in: substring in string:

>>> substring = "please help me out"
>>> string = "please help me out so that I could solve this"
>>> substring in string
True
166
MarcoS
foo = "blahblahblah"
bar = "somethingblahblahblahmeep"
if foo in bar:
    # do something

(Au fait, essayez de ne pas nommer une variable string, car il existe une bibliothèque standard Python portant le même nom. Vous risquez de dérouter les gens si vous faites cela dans un grand projet, évitant ainsi de telles collisions est une bonne habitude. )

20
Amber

Si vous recherchez plus qu'un vrai/faux, vous devriez utiliser le module re, comme:

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() retournera la chaîne "aidez-moi, s'il vous plaît".

13
ewegesin

J'ai pensé ajouter ceci au cas où vous cherchiez comment faire cela pour un entretien technique où ils ne veulent pas que vous utilisiez la fonction intégrée in ou find de Python, ce qui est horrible, mais se produit effectivement:

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
QueenJolene

Les personnes mentionnées string.find(), string.index() et string.indexOf() dans les commentaires, et je les résume ici (selon le Documentation Python ):

Tout d'abord, il n'y a pas de méthode string.indexOf(). Le lien posté par Deviljho indique qu'il s'agit d'une fonction JavaScript.

Deuxièmement, les fonctions string.find() et string.index() renvoient en réalité l'index d'une sous-chaîne. La seule différence est la manière dont ils gèrent la sous-chaîne non trouvée: string.find() renvoie -1 tandis que string.index() déclenche une ValueError.

8
Samuel Li

Vous pouvez également essayer la méthode find (). Il détermine si la chaîne str apparaît dans la chaîne ou dans une sous-chaîne de chaîne.

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")
5
Abhishek Gupta
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
1
Fredrik Pihl
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
avina k

 enter image description here

Au lieu d'utiliser find (), l'un des moyens les plus simples consiste à utiliser 'in' comme ci-dessus.

si 'string' est présent dans 'str', alors si partie s'exécutera sinon, partie s'exécutera.

0
Dev d

Peut aussi utiliser cette méthode 

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