Это то, что я придумал, прежде чем застрять (NB источник текста: The Economist):
import random
import re
text = 'One calculation by a film consultant implies that half of Hollywood productions with budgets over one hundred million dollars lose money.'
nbofwords = len(text.split())
words = text.split()
randomword = random.choice(words)
randomwordstr = str(randomword)
Шаг 1 работает: Удалить случайное слово из исходного текста
replaced1 = re.sub(randomwordstr, '', text)
replaced2 = re.sub(' ', ' ', replaced1)
Шаг 2 работает: выберите определенное количество случайных слов
nbofsamples = 3
randomitems = random.choices(population=words, k=nbofsamples)
дает, например [«над», «консультант», «один»]
Шаг 3 работает: Удалить из исходного текста один элемент этого списка случайных слов благодаря его индексу
replaced3 = re.sub(randomitems[1], '', text)
replaced4 = re.sub(' ', ' ', replaced3)
удаляет слово «консультант»
Шаг 4 не выполнен: удалить из исходного текста все элементы этого списка случайных слов благодаря их индексу
Лучшее, что я могу понять:
replaced5 = re.sub(randomitems[0],'',text)
replaced6 = re.sub(randomitems[1],'',replaced5)
replaced7 = re.sub(randomitems[2],'',replaced6)
replaced8 = re.sub(' ', ' ', replaced7)
print(replaced8)
Это работает (все 3 слова были удалены), но это неуклюже и неэффективно (мне пришлось бы переписать его, если я изменил переменную nbofsamples).
Как я могу перебрать свой список случайных слов (шаг 2), чтобы удалить эти слова из исходного текста?
Заранее спасибо