Python 如何使用单个re.sub删除数字之间的多个空格

Python 如何使用单个re.sub删除数字之间的多个空格,python,regex,replace,Python,Regex,Replace,我想使用单个re.sub删除数字之间的空格。使用以下命令: import re print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222"))) print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222 33"))) print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222 33 4"))) print(re.sub('([0-

我想使用单个re.sub删除数字之间的空格。使用以下命令:

import re

print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222")))

print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222 33")))

print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222 33 4")))

print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222 33 4 55")))

print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222 33 4 55 6")))

print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222 33 4 55 6 77")))
但是,如果有多个连续数字,我只能删除空格:

11222
1122233
11222334
11222334 55
11222334 556
11222334 556 77
但是如何删除只有一个数字的空格,使命令的结果类似于

print(re.sub('([0-9,.]) ([0-9,.])','\\1\\2',str("11 222 33 4 55 6 77")))
会是

1122233455677

尝试使用lookarounds检测空格周围的数字:

print(re.sub('(?<=\\d) (?=\\d)','',str("11 222 33 4 55 6 77")))

1122233455677

print(re.sub)(?有几个表达式可以抓住数字。在这种情况下,我在中找到了最简单的代码。它可以去掉其他字符

print(re.sub(r'\s','',str("11 222 33 4 55")))

此解决方案似乎有效!因此我无法将重叠组与连续的匹配实例一起使用。这种不同的方法使用look aheads而不是重叠组,效果完全符合要求。@Heikki您当前方法的限制是,只有当所有空间都被两个或更多数字的孤岛包围时,它才有效。@Heikki(除了开头和结尾)。这是因为一旦正则表达式引擎使用了一个数字,它就不能被重用。Lookarounds在这里是一个不错的选择,因为它们断言,但不使用,所以同一个数字在概念上可以使用两次。为了完整性,问题的正则表达式提示我想去掉数字和分隔符之间的空格。因此,我最终最后生成以下正则表达式:
re.sub('(?我对问题进行了编辑,以包括数字和小数分隔符,但排除了其他字符。@Heikki Nice。在许多其他人回答了您的问题后,您不应更改您的问题。相关。我希望避免删除数字和小数分隔符以外的空格。这适用于点符号。打印(re.sub(“()(\d)”,\\2”,"11 222 33 4 55 . 6 77"))