如何使用python替换括号中和括号前的单词

时间:2018-05-01 14:22:16

标签: python regex string word parentheses

如何替换括号中写有“或某事”的单词?

示例:

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

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']