Есть ли способ, которым я могу заменить / удалить все в строке, кроме определенных фраз?

#python #python-3.x

#python #python-3.x

Вопрос:

Если бы у меня была строка и список, подобный этому:

 myString = "This is a string which has stuff in it."
myList = ["string", "things", "python"]
  

Есть ли способ, которым я могу удалить все в myString, за исключением вещей, перечисленных в myList (в этом случае удаляется все, кроме слова «строка»)? Любая помощь будет оценена

Комментарии:

1. Разрешены ли частичные совпадения?

2. print(" ".join(i for i in myString.split() if i in myList)) ?

3. print([x for x in myList if x in myString]) ?

4. @Rakesh Это сработало отлично, спасибо. Это намного проще, чем все, что я пытался сделать.

5. @Rakesh menthod не будет работать для myString = «Это строка, в которой есть что-то». myList = [«строка», «вещи», «python»,»it»]

Ответ №1:

 myString = "This is a string which has stuff in it."
myList = ["string", "things", "python", "it"]

print([x for x in myList if x in myString])
  

ВЫВОД:

 ['string', 'it']
  

Комментарии:

1. вам нужно сделать обратный вывод. OP запрашивает слова из списка, а не все остальное.

2. Отредактировал и исправил вывод, а также downvoters? 😎

3. Не мое мнение, я только указал на вашу ошибку. Но здесь проголосуйте за «питоновское» решение.

Ответ №2:

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

Ответ №3:

 mytxt = "some sentence to ignore phase and carry on"
reg = re.compile(r"(ignore phase)")
final_str = re.sub(reg,'',mytxt)
print(final_str)
  

Вывод —

какое-то слово и продолжить