Python Regex删除空格,括号和数字

时间:2020-06-09 09:01:09

标签: python python-3.x regex regex-lookarounds regex-group

Python,我有一个像这样的字符串,输入:

IBNR    13,123   1,234  ( 556 )   ( 2,355 )  934 

必需的输出-

删除括号和数字前的空格

IBNR    13,123   1,234  (556)   (2,355)  934  

或卸下括号:

IBNR   13,123   1,234  556  2,355  934  

我已经尝试过了:

re.sub('(?<=\d)+ (?=\\))','',text1)

这解决了右侧问题,需要左侧方面的帮助。

3 个答案:

答案 0 :(得分:5)

您可以使用

import re

data = """IBNR    13,123   1,234  ( 556 )   ( 2,355 )  934 """

def replacer(m):
    return f"({m.group(1).strip()})"

data = re.sub(r'\(([^()]+)\)', replacer, data)
print(data)
# IBNR    13,123   1,234  (556)   (2,355)  934 

或完全删除括号:

data = re.sub(r'[()]+', '', data)
# IBNR    13,123   1,234   556     2,355   934 

@JvdV指出,您最好使用

re.sub(r'\(\s*(\S+)\s*\)', r'\1', data)

答案 1 :(得分:0)

使用此模式转义括号:

(\w+\s+\d+,\d+\s+\d+,\d+\s+)\((\s+\d+\s+)\)(\s+)\((\s+\d+,\d+\s)\)(\s+\d+)

查看结果,包括替换:

https://regex101.com/r/ch6Jge/1

答案 2 :(得分:0)

我很少使用前瞻,但我认为它可以满足您的要求。

re.sub(r'\(\s(\d+(?:\,\d+)*)\s\)', r'\1', text1)
相关问题