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)
这解决了右侧问题,需要左侧帮助。
您可以使用
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)
使用此模式转义括号:
(\w+\s+\d+,\d+\s+\d+,\d+\s+)\((\s+\d+\s+)\)(\s+)\((\s+\d+,\d+\s)\)(\s+\d+)
查看结果,包括替换:
我很少使用前瞻性,但我认为它可以满足您的要求。
re.sub(r'\(\s(\d+(?:\,\d+)*)\s\)', r'\1', text1)