[英]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.