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

[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相关问答推荐

如何使用regex将电话号码和姓名从文本字符串中分离出来

按小时和日期对Pandas 数据帧进行分组

Pandas 根据条件增加Dataframe列

如何将项目添加到Python中具有固定大小的列表列表中

在 Python 中比较和排序列之间的值(带有不匹配列)

当我在正则表达式末尾使用斜杠时,为什么会得到不同的结果?

在Pandas中,根据另一列中的重复值将数据分组为一列

从 LeetCode 的 Python 解决方案类中理解关键字 self

将值从函数传递到标签

我想使用命令提示符安装 cv2

如何将 OLS 趋势线添加到使用 updatemenus 显示数据子集的 plotly 散点图图形对象?

类不继承时 super() 的用途

裁剪复数以解决 exp 中的溢出错误

Python BeautifulSoup:在 Select 语句中排除其他标签

如何融化具有自定义名称的Pandas

PIL 在图像上绘制半透明方形覆盖

将行附加到 DataFrame 的最快和最有效的方法是什么?

谁能给我一个 Python 3 中标准输入和标准输出的快速教程?

对字节进行按位运算

在 linux mint 上安装 python3-venv 模块