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

时间:2019-02-26 13:38:37

标签: 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-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

2 个答案:

答案 0 :(得分:3)

尝试使用环顾四周方法来检测空格周围的数字:

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

1122233455677

这里的想法是针对每个空间,我们向后看并断言一个数字存在,而我们向前看并断言一个数字存在。

请注意,此答案不会删除字符串两端可能出现的空格,但是同样,这些空格不在数字之间。

答案 1 :(得分:0)

有几种表达方式可以理解数字。在这种情况下,我在ref中找到了最简单的代码。可以摆脱其他字符。

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