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

如何修改Python代码让提取字符串中数字时保留小数点

问题原因

原有代码仅通过isdigit()判断字符是否为数字,直接过滤掉了小数点,因此会丢失小数的小数点分隔符。

修改方案

方案1:调整原有遍历逻辑,新增小数点校验规则

在保留数字的同时限制每个数字串仅可出现1次小数点,避免出现8.2.9这类非法格式:

def getDigits(s):
    answer = []
    for char in s.split(";"):
        k = ""
        dot_count = 0
        for split_s in char:
            if split_s.isdigit():
                k += split_s
            # 仅允许数字后出现1次小数点,可根据需求调整是否允许小数点开头
            elif split_s == "." and dot_count == 0 and k:
                k += split_s
                dot_count += 1
        if k:
            # 去除末尾残留的无效小数点,比如匹配到`8.`的场景会处理为`8`
            k = k.rstrip(".")
            answer.append(k)
    return answer

针对输入s = 'hiking;time:106,01;distance:8.29',返回结果为['10601', '8.29'],符合预期。

方案2:使用正则匹配简化实现

直接通过正则匹配合法的整数/小数格式,代码更简洁易维护:

import re

def getDigits(s):
    answer = []
    for part in s.split(";"):
        # 匹配整数或小数格式的数字串
        nums = re.findall(r'\d+\.?\d*', part)
        answer.extend(nums)
    return answer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:24:08