Вы можете попробовать следующее решение, здесь я не импортировал ни одного модуля. Используются только следующие функции: strip, split and replace
input_string = "(Hello|Hi) my name is (Bob|Robert)"
split_string = (input_string.replace("("," ").replace(")"," ")).split(" ")
print ([i.strip().split("|") for i in split_string])
#Output --> [['Hello', 'Hi'], ['my name is'], ['Bob', 'Robert']]
Надеюсь, это поможет!
Если вам нужно окончательное решение для вашего запроса, используйте следующий код:
from itertools import product
input_string = "(Hello|Hi) my name is (Bob|Robert)"
split_string = (input_string.replace("("," ").replace(")"," ")).split(" ")
jj = [i.strip().split("|") for i in split_string]
kk = list(product(*jj))
print ([" ".join(i) for i in kk])
#output --> ['Hello my name is Bob', 'Hello my name is Robert', 'Hi my name is Bob', 'Hi my name is Robert']
Приведенный выше код также будет работать для: input_string = "(Hello | Hi | Hey) my (name | naam) is (Bob | Robert)"