在字符串中
my_string = 'abcd (ef gh ) ij'
只有当空格出现在括号内时,我才需要删除它们,结果是:
my_clean_string = 'abcd (efgh) ij'
这个post建议如何通过
re.sub(r'\([^)]*\)', '', my_string)
完全删除所有括号文本,但是我不知道如何指定只应将删除应用于空格' '
。是否有一个regexpr(或简单的python)解决方案可以在不明确循环每个字符的情况下完成此任务?
最佳答案
下面是一种对嵌套括号也有效的通用方法:
In [27]: my_string = 'abcd ( ()e(e w )f ) gh'
In [28]: re.sub(r' \(\s+|\s+\)', lambda x: x.group().strip(), my_string)
Out[28]: 'abcd(()e(e w)f) gh'
如果要删除单词之间的空格,则可以使用look-arounds;-):
In [40]: my_string = 'abcd ( ()e(e w )f ) gh'
In [41]: re.sub(r'\s+(?=[^[\(]*\))|((?<=\()\s+)', '', my_string)
Out[41]: 'abcd (()e(ew)f) gh'