2011-09-09 26 views

risposta

163

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 
+10

cribbio, pitone è troppo forte, ero penso che ha bisogno di una funzione per farlo, ma è un accumulo in uno Oo – windsound

+0

In realtà stavo imparando JS dopo aver imparato Python, per questo avresti bisogno di aggiungere un sacco di istruzioni if ​​else e altre cose. Quindi, volevo solo ricordare a me stesso come è stato fatto in Python, questa risposta mi ha fatto dire a me stesso "Certo!", Voglio dire che cose come questa in Python sono così banali che non ci pensi mai molto! : P –

+0

@GamesBrainiac In realtà, per fare lo stesso in JS è solo 'string.indexOf (sottostringa)! = -1', più [qui] (http: // stackoverflow.it/questions/1789945/how-can-i-check-if-one-string-contiene-another-substring-in-javascript) – Deviljho

1
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 
20
foo = "blahblahblah" 
bar = "somethingblahblahblahmeep" 
if foo in bar: 
    # do something 

(A proposito - cercare di non nominare una variabile string, dal momento che c'è una libreria standard di Python con lo stesso nome si potrebbe confondere la gente. se lo fai in un grande progetto, quindi evitare collisioni del genere è una buona abitudine.)

+0

Non solo confondere ma anche rompere tutto stringa di riferimento dopo quel punto. – rplnt

13

Se stai cercando più di un True/Fal se, devi essere più adatto di utilizzare 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 "ti prego di aiutarmi".

+1

Un buon consiglio sulle ricerche di espressioni regolari. –

+0

su una nota più leggera. se stai cercando di risolvere qualcosa con un'espressione regolare, stai cercando di risolvere due problemi. –

5

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") 
8

persone menzionate string.find(), string.index(), e string.indexOf() nei commenti, e riassumo qui (secondo il Python Documentation):

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

In secondo luogo il 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 uno ValueError.

9

pensato che vorrei aggiungere questo nel caso in cui si sta cercando il modo per fare questo per un colloquio tecnico in cui non vogliono di utilizzare la funzione di Python incorporata 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 
+2

Bel esempio, ma la tua identificazione non è corretta. E per velocizzare le cose controllerei 'se len (sottostringa)> len (stringa) restituisce False' anche il range del ciclo dovrebbe essere meglio' range (len (stringa) -len (sottostringa)) 'perché non troverai una parola di tre lettere nelle ultime due lettere della stringa. (Salva alcune iterazioni). – AnyOneElse

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

trova la sottostringa 'bob' in una determinata stringa. –

0

è inoltre possibile utilizzare questo metodo

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