这可能是一个愚蠢的问题,但我找不到解决它的好方法。 我想捕获一些字符串中的数字,其中每组 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']
当然,之后我可以使用列表理解来删除每个数字的空格,但应该有一个更直接的正则表达式解决方案,不是吗?我尝试使用非捕获组或环顾四周,但没有成功(要么留下空白,要么数字被截断为两部分)。
感谢您的帮助
最佳答案
这个表达式可能会这样做:
(?<=\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 的右上角面板中进行了解释如果您想探索/简化/修改它。
关于python - 捕获数字之间有空格的数字并删除该空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57030332/