Si j'avais une chaîne et une liste comme celle-ci:
myString = "This is a string which has stuff in it." myList = ["string", "things", "python"]
3 Réponses :
import re
myString = "This is a string which has stuff in it."
myList = ["string", "things", "python","it"]
print(" ".join(word for word in re.sub("[^\w]", " ", myString).split() if word in myList))
['string', 'it']
Vous devez faire inverser votre sortie. OP demande des mots de la liste, pas tout le reste.
Édité et corrigé la sortie aussi, des descentes? 8-)
Pas mon bowvote, je n'ai signalé que votre erreur. Mais ici, avoir un uppot pour une solution "pythonique".
mytxt = "some sentence to ignore phase and carry on" reg = re.compile(r"(ignore phase)") final_str = re.sub(reg,'',mytxt) print(final_str) Output - some word to and carry on
Les matchs partiels sont-ils autorisés?
Imprimer ("" .Join (i pour I dans mystring.split () si je dans MyList)) code>?Imprimer ([x pour x dans la mychiste si x dans mystring]) code>?@Rakesh ça a fonctionné parfaitement, merci. C'est tellement plus facile que tout ce que j'essayais de faire.
@Rakesh En tant que note latérale, IIRC Il est plus rapide si vous passez une liste sur
Joindre code> qu'un générateur, c'est-à-dire à l'aide d'une compréhension de la liste serait plus rapide.@Rakesh Menthod ne fonctionnera pas pour mystring = "Ceci est une chaîne qui a des trucs de choses." myList = ["string", "choses", "python", "ça"]