замена строки python, генерирование всех возможных комбинаций

Я работаю со строками, каждый из которых имеет динамическое количество необязательных переменных в скобках:

(?please) tell me something (?please) 

Теперь я хочу заменить переменные пустой строкой и вернуть все возможные варианты:

 tell me something (?please) (?please) tell me something tell me something 

Требуемая функция должна обрабатывать множество, разные и бесконечное количество переменных.

любая помощь высоко ценится.

Проблема с использованием решения в комбинациях замены строк заключается в том, что решение выполняет итерацию по каждому символу в исходной строке, тогда как вы хотите проверить подстроки исходной строки. Таким образом, вы должны split() вашу строку и перебрать этот список. Кроме того, когда вы присоединяетесь к списку в конце, помещайте пробелы между словами. Например,

 def filler(word, from_char, to_char): options = [(c,) if c != from_char else (from_char, to_char) for c in word.split(" ")] return (' '.join(o) for o in product(*options)) list(filler('(?please) tell me something (?please)', '(?please)', '')) 

Это возвращает

 ['(?please) tell me something (?please)', '(?please) tell me something ', ' tell me something (?please)', ' tell me something '] 

Если вы хотите опустить строку, которая не содержит абзацев (строка '(?please) tell me something (?please)' ), хакерское решение – просто удалить первый элемент результата, поскольку способ работы product гарантирует первый результат выбирает первый элемент каждой опции, который соответствует строке, в которой нет строк.