131 votes

Python : Comment vérifier si une chaîne contient des sous-chaînes d'une liste ?

Comment puis-je vérifier une chaîne de caractères contenant des sous-chaînes d'une liste, comme dans Vérifier si une chaîne contient un élément d'une liste (de chaînes), mais en Python ?

282voto

Sven Marnach Points 133943

Essayez ce test :

any(sous-chaîne dans chaîne for sous-chaîne in liste_sous-chaînes)

Il renverra True si l'une des sous-chaînes dans liste_sous-chaines est contenue dans chaîne.

Notez qu'il existe une version Python de la réponse de Marc Gravell dans la question liée :

from itertools import imap
any(imap(string.__contains__, liste_sous-chaines)) 

En Python 3, vous pouvez utiliser map directement:

any(map(string.__contains__, liste_sous-chaines))

Probablement que la version ci-dessus utilisant une expression génératrice est plus claire cependant.

3 votes

@newtover: Les expressions de générateur n'ont pas de crochets carrés.

7 votes

Y a-t-il un moyen d'obtenir le sous-chaîne lorsque cela retournera True?

13 votes

@vagabond Vous pouvez utiliser next(sous-chaîne pour sous-chaîne dans liste_sous-chaîne if sous-chaîne dans chaîne), qui retournera la première sous-chaîne correspondante, ou déclenchera StopIteration s'il n'y a pas de correspondance. Ou utilisez une simple boucle : for sous-chaîne in liste_sous-chaîne: if sous-chaîne dans chaîne: return sous-chaîne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X