python - 捕获数字之间有空格的数字并删除该空格

标签 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']

当然,之后我可以使用列表理解来删除每个数字的空格,但应该有一个更直接的正则表达式解决方案,不是吗?我尝试使用非捕获组或环顾四周,但没有成功(要么留下空白,要么数字被截断为两部分)。

感谢您的帮助

最佳答案

这个表达式可能会这样做:

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

相关文章:

regex - 如何将Apache告诉与此相对的LocationMatch?

正则表达式分为几组

用于查找单词的 Ruby 正则表达式

python - 按列扩展行,同时根据值操作其他行

c# - 用于替换标签的正则表达式

c++ - 使用 C 样式数组作为 STL 字符串操作的后端

c++ - GDB-Python 脚本 : any samples iterating through C/C++ struct fields

python - cron任务设置环境变量失败

python - 银行账户类。如何让它更强大/更高效? (面向对象)

python - 如何在 Cython 中构建 iostream 对象(例如 cout)并将其传递给 C++ 函数?