157 votes

Vérifier la liste des mots d'une autre chaîne

Je peux faire une telle chose en python :

l = ['one', 'two', 'three']
if 'some word' in l:
   ...

Cela vérifiera si « un mot » existe dans la liste. Mais je peux inverser les choses ?

l = ['one', 'two', 'three']
if l in 'some one long two phrase three':
    ...

Je dois vérifier si certains mots du tableau sont dans la chaîne. Je peux le faire en utilisant le cycle, mais cette façon a plus de lignes de code.

353voto

KennyTM Points 232647
if any(word in 'some one long two phrase three' for word in list_):

26voto

Paul McGuire Points 24790

Si votre liste de mots est de longueur importante, et que vous devez faire ce test plusieurs fois, il peut être utile de convertir la liste en un ensemble et d'utiliser l'intersection de l'ensemble pour tester (avec l'avantage supplémentaire que vous obtiendrez les mots réels qui sont dans les deux listes) :

>>> long_word_list = 'some one long two phrase three about above along after against'
>>> long_word_set = set(long_word_list.split())
>>> set('word along river'.split()) & long_word_set
set(['along'])

2voto

Anurag Misra Points 728

La méthode la plus simple et la plus simple pour résoudre ce problème est d'utiliser re

import re

search_list = ['one', 'two', 'there']
long_string = 'some one long two phrase three'
if re.compile('|'.join(search_list),re.IGNORECASE).search(long_string): #re.IGNORECASE is used to ignore case
    # Do Something if word is present
else:
    # Do Something else if word is not present

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