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

Python正则从字符串提取数字:仅能获取整数,如何同时提取小数?

数字提取逻辑适配小数场景调整

原实现仅能返回整数结果的核心原因是现有正则r'\d+'仅能匹配连续的纯数字片段,遇到带小数点的数值时,会将整数部分、小数部分拆分为两个独立结果,无法保留完整的小数结构。

调整方案

修改正则匹配规则,优先识别完整的小数结构,再识别纯整数内容,从根源避免小数被错误拆分:

  • 核心适配正则:r'\d+\.\d+|\d+'
  • 匹配逻辑:
    • 优先匹配「整数部分+小数点+小数部分」的标准小数格式
    • 未匹配到符合要求的小数结构时,再匹配连续的纯整数内容
  • 保留原函数将匹配结果用---拼接返回的逻辑不变

修改后完整代码

import re
def vreplace_chars(third):
    vlist_of_numbers = re.findall(r'\d+\.\d+|\d+', third)
    vresult_number = '---'.join(vlist_of_numbers)
    return vresult_number

number = vreplace_chars(imgchar)

适配效果

以输入字符串"测试值:12.5,基准值3,观测值0.89"为例:

  • 原代码输出结果:12---5---3---0---89
  • 修改后输出结果:12.5---3---0.89

边缘场景扩展

如果业务需要识别不带整数位的小数(如.72)、不带小数位的浮点形式数值(如45.),可以将正则表达式替换为r'\d+\.\d*|\.\d+|\d+',覆盖更多非常规数值格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 20:15:04