Python Regex删除带括号和数字的空格

问题描述 投票:1回答:3

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

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

必需的输出-:

或者删除括号和数字的空格b / w

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

或卸下括号:

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

我已经尝试过:

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

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

python python-3.x regex regex-lookarounds regex-group
3个回答
4
投票

您可以使用

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)

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


0
投票

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

re.sub(r'\(\s(\d+(?:\,\d+)*)\s\)', r'\1', text1)
© www.soinside.com 2019 - 2024. All rights reserved.