-1
votes

Y a-t-il une façon de remplacer / supprimer tout dans une chaîne sauf pour certaines phrases?

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"]


6 commentaires

Les matchs partiels sont-ils autorisés?


Imprimer ("" .Join (i pour I dans mystring.split () si je dans MyList)) ?


Imprimer ([x pour x dans la mychiste si x dans mystring]) ?


@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 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"]


3 Réponses :


0
votes
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))

0 commentaires

3
votes
['string', 'it']

3 commentaires

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".



0
votes
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

0 commentaires