用数字之间的空格捕获数字并删除该空格

时间:2019-07-14 19:06:43

标签: python regex

这可能是一个愚蠢的问题,但我找不到解决该问题的好方法。 我想捕获一些字符串中的数字,这些字符串在每组3位数字之间包含一个空格。例如“ 45 000€”。

我可以通过一些正则表达式操作轻松捕获数字,但是我无法直接删除空格,即我得到的是“ 45 000”而不是“ 45000”。

import re
digits = re.findall(r"(\d+\s?\d*)", "Salary between 35 000 € and 45 000 €")
print(digits)

返回:

['35 000', '45 000']

我直接想要:

['35000', '45000']

当然,在那之后,我可以使用列表推导删除每个数字的空格,但是使用regex应该有一个更直接的解决方案,不是吗?我试图与非捕获组一起玩耍或环顾四周,但没有成功(要么留空白,要么数字被一分为二)。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

此表达式可能会这样做:

(?<=\d)\s+(?=\d)

和一个re.sub,然后我们将执行一个简单的re.findall

import re

test_str = "Salary between 35 000 € and 45 000 € 35 000 000    0 0 0 €"

print(re.findall(r"(\d+)", re.sub(r"(?<=\d)\s+(?=\d)", "", test_str)))

输出

['35000', '45000', '35000000000']

如果要浏览/简化/修改该表达式,请在this demo的右上角进行解释。