You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中使用正则表达式筛选含空格的数值

问题解决:正则匹配带小数的数字

错误原因分析

  • 你第一次用的(\d+)只能匹配整数部分,小数点和后面的数字不在\d的匹配范围内,所以只抓到了2,漏掉了.1。
  • 第二次的正则还是用(\d+)匹配数字,但目标字符串里的是带小数的2.1和296.2,根本匹配不到整数,所以re.search返回None,调用group()自然会报AttributeError。

正确的正则写法

要匹配带小数的浮点数,需要把小数点和后续数字也包含进去,用\d+\.\d+来匹配“整数部分+小数点+小数部分”的结构。如果要兼容整数(比如可能出现5或3.这种情况),可以用更通用的\d+\.?\d*|\.\d+。

示例代码

import re

s = 'abc (efg): 2.1 296.2'
# 匹配前缀 + 两个带小数的数字
pattern = r'abc\s+\(efg\):\s+(\d+\.\d+)\s+(\d+\.\d+)'
s1 = re.search(pattern, s)

# 先判断是否匹配成功,避免报错
if s1:
    print("完整匹配内容:", s1.group())
    print("第一个数字:", s1.group(1))
    print("第二个数字:", s1.group(2))

运行结果

完整匹配内容: abc (efg): 2.1 296.2
第一个数字: 2.1
第二个数字: 296.2

额外提醒

以后用re.search的时候,一定要先检查返回值是不是None,再调用group()或其他方法,避免出现类似的属性错误。

内容的提问来源于stack exchange,提问作者Kishan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:31:10