我有一大堆句子,每对括号/括号/大括号中都有额外的空格.有些括号/括号/大括号相互重叠,这给我带来了问题.例如.:

[in]: sentence = '{ ia } ( { fascia } antebrachii ). Genom att aponeurosen fäster i armb'
[in]: pattern = r'(\s([?,.!"]))|(?<=\{|\[|\()(.*?)(?=\)|\]|\})'
[in]: re.sub(pattern, lambda x: x.group().strip(), sentence)
[out]: '{ia} ({ fascia} antebrachii ). Genom att aponeurosen fäster i armb'

如图所示,我未能删除重叠括号/圆括号/大括号中不必要的空格.如何覆盖这些重叠或嵌套的 case ?谢谢

Expected output:
'{ia} ({fascia} antebrachii). Genom att aponeurosen fäster i armb'

推荐答案

可以用以下正则表达式替换左括号后面或右括号前面的任何空格:

(?<=[\[{(])\s+|\s+(?=[\]})])

(?<=[\[{(])\s+-查找前面有[{(个空格之一的空格

\s+(?=[\]})])-查找空格,后跟]})个空格中的一个

在python中

sentence = '{ ia } ( { fascia } antebrachii ). Genom att aponeurosen fäster i armb'
re.sub(r'\s+(?<=[\[{(])|\s+(?=[\]})])', '', sentence)

输出:

{ia} ({fascia} antebrachii). Genom att aponeurosen fäster i armb

Python-3.x相关问答推荐

正则表达式匹配并提取括号前的单词

循环遍历数据框以提取特定值

以某种方式分割字符串

Python-Django 设置 Pandas DataFrame 的多索引不会分组/合并最后一个索引

Python webdrivermanager 和 Chrome 115.0 的 URL https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790 错误没有此类驱动程序

ImportError:抓取数据后找不到 html5lib

python 分代垃圾收集:get_count 没有报告正确的对象创建数?

使用gekko python的混合整数非线性规划

使用一周的特定第一天将每日日期转换为每周

从 Python2 到 Python3 的这种解包行为的变化是什么?

保存 StandardScaler() 模型以用于新数据集

为什么 setattr 在绑定方法上失败

Python 3.5 中编码 utf-8 和 utf8 的区别

有没有更好的方法来判断一个数字是否是两个数字的范围

如何从左到右解包元组?

Python3 的超级和理解-> TypeError?

AttributeError:LinearRegression 对象没有属性coef_

tkinter TclError:错误的文件类型使用 askopenfilename

如何正确创建自定义文本编解码器?

如何使用 Python 订阅 Websocket API 通道?