这可能是一个愚蠢的问题,但我找不到解决该问题的好方法。 我想捕获一些字符串中的数字,这些字符串在每组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应该有一个更直接的解决方案,不是吗?我试图与非捕获组一起玩耍或环顾四周,但没有成功(要么留空白,要么数字被一分为二)。
感谢您的帮助
答案 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的右上角进行解释。