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

如何编写Python函数实现字符串到Int、Float或原字符串的自动解析

Python 函数 parseValue 实现

实现思路

  • 优先判断是否为符合规则的整数字符串:尝试转为int,转换成功后检查是否存在前置零(长度大于1且首字符为0,负数则检查负号后首字符),符合要求则返回int类型结果
  • 若不是合法整数,判断字符串是否包含小数点,包含则尝试转为float,转换成功则返回float类型结果
  • 上述两种情况都不满足时,直接返回原字符串

完整代码

def parseValue(v):
    # 先判断是否为无前置零的整数
    try:
        int_num = int(v)
        # 检查前置零情况
        if v.startswith('-'):
            # 负数情况:去掉负号后长度>1时不能以0开头
            if len(v) <= 2 or v[1] != '0':
                return int_num
        else:
            # 非负数情况:长度>1时不能以0开头
            if len(v) <= 1 or v[0] != '0':
                return int_num
    except ValueError:
        # 不是整数格式,继续后续判断
        pass
    
    # 判断是否为合法浮点数
    if '.' in v:
        try:
            float_num = float(v)
            return float_num
        except ValueError:
            # 不是合法浮点数,返回原串
            return v
    
    # 所有转换规则都不匹配,返回原字符串
    return v

测试验证

用题目给出的示例验证效果如下:

print(type(parseValue("123.45")), parseValue("123.45")) # 输出 <class 'float'> 123.45
print(type(parseValue("12345")), parseValue("12345")) # 输出 <class 'int'> 12345
print(type(parseValue("-23")), parseValue("-23")) # 输出 <class 'int'> -23
print(type(parseValue("Florida")), parseValue("Florida")) # 输出 <class 'str'> Florida
print(type(parseValue("0.12")), parseValue("0.12")) # 输出 <class 'float'> 0.12
print(type(parseValue("0010")), parseValue("0010")) # 输出 <class 'str'> 0010

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:57:03