用一对括号拆分并保留内容

Split with pair of brackets and keep content between

我正在尝试拆分字符串列表中的字符串。现在,每当我看到以下任何字符时,我都必须拆分:'.'、';'、':'、'?'、'!'、'( )'、'[ ]'、'{ }'(保持请记住,我必须保留括号内的任何内容)。 为了解决这个问题,我试着写

print(re.split("\(([^)]*)\)|[.,;:?!]\s*", "Hello world,this is(example)"))

但作为输出我得到:

['Hello world', None, 'this is', 'example', '']

去掉末尾的' ',我稍后会解决,如何删除出现在列表中间的None? 顺便说一句,我不能再次在列表中迭代,因为该程序将处理大文件,我必须尽可能快地完成它。 此外,我不必一定要使用 re.split,所以一切正常!

我在这方面还是个新手,所以如果有不正确的地方,我很抱歉。

不确定这是否足够快,但您可以这样做:

re.sub(r";|,|:|\(|\)|\[|\]|\?|\.|\{|\}|!", " ", "Hello world,this is(example)").split()