2011-11-14 9 views

risposta

71

Prova questo test:

any(substring in string for substring in substring_list) 

Si tornerà True se una qualsiasi delle stringhe in substring_list è contenuto in string.

noti che v'è un analogo di Python Marc Gravell's answer nell'interrogazione collegato:

from itertools import imap 
any(imap(s.__contains__, substring_list)) 

Probabilmente la versione sopra utilizzando un generatore di espressione è chiaro però.

+3

@newtover: [espressioni generatrici] (http://docs.python.org/tutorial/classes.html#generator-expressions) non hanno parentesi quadre. –

+2

c'è un modo per ottenere la sottostringa quando restituirà True? – vagabond

+2

@vagabond Puoi usare 'next (sottostringa per sottostringa in sottostringa_stringa se sottostringa in stringa)', che restituirà la prima sottostringa corrispondente, o lancia 'StopIteration' se non c'è corrispondenza. Oppure usa un semplice ciclo: 'per la sottostringa nella sottostringa_stringa: se la sottostringa nella stringa: restituisce la sottostringa'. –