繁体   English   中英

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

[英]Capturing numbers with space between digits and removing that space

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

谢谢你的帮助

该表达式可能会这样做:

(?<=\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']

如果您想探索/简化/修改该表达式,请在此演示的右上方面板中进行解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM