如何替换括号中写有“或某事”的单词?
示例:
string = "acısı içine (or yüreğine) çökmek (or işlemek)"
预期产出:
'acısı içine çökmek' , 'acısı yüreğine çökmek' , 'acısı içine işlemek' , 'acısı yüreğine çökmek'
我正在尝试编写类似下面的内容但如果存在多个括号则不起作用。
import re
word='abat etmek (or eylemek)'
item1=re.sub("\([^)]+\)","",word)
parenthesis=re.search('\(([^)]+)', word).group(1)
par=parenthesis.split('or')
item2=item1.replace(item1.split()[-1],par[1])
答案 0 :(得分:1)
import re
import itertools
str = "acısı içine (or yüreğine) çökmek (or işlemek)"
# spitting the string into "combinable" parts
pattern = re.compile('\w+ \(or \w+\)|\w+')
parts = pattern.findall(str)
# parts = ['acısı', 'içine (or yüreğine)', 'çökmek (or işlemek)']
# replacing each part with a list of possible options (one or two)
parts = [_.strip(')').split(' (or ') for _ in parts]
# parts = [['acısı'], ['içine', 'yüreğine'], ['çökmek', 'işlemek']]
# producing all possible combinations
result = [' '.join(p) for p in itertools.product(*parts)]
# result = ['acısı içine çökmek', 'acısı içine işlemek', 'acısı yüreğine çökmek', 'acısı yüreğine işlemek']