如果前后字符不是空格,如何用空格替换括号“()”,否则删除括号

时间:2019-05-06 09:57:17

标签: python regex

我希望我的文字转换成 args深深的小步

    import re
    originalFile = "args(deep) ( deep ) peed)"
    print(originalFile)
    originalFile = re.sub(r'((\s+)[\( \)])',r'', re.sub(r'([A-Za-z0-                9][\( \)])',r' ', originalFile))
    print(originalFile)

但是在运行代码时我得到了输出

    args(deeo) ( deep ) peed)
    arg dee dee pee

2 个答案:

答案 0 :(得分:0)

方法1

您可以将每个括号替换为一个空格,然后过滤多个空格:

import re
t = t.replace("(", " ")
t = t.replace(")", " ")
re.sub(' +', ' ', t)

方法2

使用以下regex

re.sub("(\s*[()]\s*)+", " ", t) 

答案 1 :(得分:0)

您可以使用以下正则表达式(用空格代替)与紧随其后的对strip()的后续调用:

\s*[()][\s()]*

请参见regex demo

正则表达式详细信息

  • \s*-超过0个空格
  • [()]-一个)(
  • [\s()]*-0+个空格,()个字符。

Python demo

import re
originalFile = "args(deep) ( deep ) peed)"
print(re.sub(r"\s*[()][\s()]*", " ", originalFile).strip())
# => args deep deep peed