it-swarm.it

Come determinare se una sottostringa si trova in una stringa diversa

Ho una sottostringa:

substring = "please help me out"

Ho un'altra stringa:

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

Come faccio a trovare se substring è un sottoinsieme di string che usa Python?

103
sunny

con 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

(A proposito, prova a non nominare una variabile string, dato che esiste una libreria standard Python con lo stesso nome. Potresti confondere le persone se lo fai in un progetto di grandi dimensioni, quindi evitare collisioni come questa è una buona abitudine. )

20
Amber

Se stai cercando più di un vero/falso, sarai il più adatto a usare il modulo re, come:

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() restituirà la stringa "please help me out".

13
ewegesin

Ho pensato di aggiungere questo nel caso in cui tu stia cercando di farlo per un colloquio tecnico in cui non vogliono che tu usi la funzione built-in di Python in o find, che è orribile, ma succede:

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

Le persone hanno menzionato string.find(), string.index() e string.indexOf() nei commenti, e li riepiloghiamo qui (secondo la Python Documentation ):

Prima di tutto non esiste un metodo string.indexOf(). Il collegamento pubblicato da Deviljho mostra che questa è una funzione JavaScript.

In secondo luogo string.find() e string.index() restituiscono effettivamente l'indice di una sottostringa. L'unica differenza è il modo in cui gestiscono la sottostringa non trovata: string.find() restituisce -1 mentre string.index() genera un ValueError.

8
Samuel Li

Puoi anche provare il metodo find (). Determina se stringa str si verifica in stringa o in una sottostringa di stringa.

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

Invece di usare find (), uno dei modi semplici è l'uso di 'in' come sopra.

se 'substring' è presente in 'str', allora se parte verrà eseguita altrimenti parte verrà eseguita.

0
Dev d

Può anche usare questo metodo 

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