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

Python技术问题:去除小数点后零但保留左侧前导零

在Python中保留前导零并去除小数点后多余的零

问题描述

需求是处理数值字符串时:

  • 去除小数点后的末尾零(若小数部分全为零则移除小数点)
  • 严格保留数值左侧的前导零

输入示例:0001202406040252523670952717.00
现有函数处理后输出:1202406040252523670952717(丢失前导零)
期望输出:0001202406040252523670952717

现有函数代码:

def strip_function(num):
    return num.to_integral() if num == num.to_integral() else num.normalize()

问题原因

现有函数操作的是数值类型(如Decimal或float),但数值类型本身不会存储前导零——前导零属于格式信息,只有字符串才能保留这类格式细节。直接将输入转为数值处理必然丢失前导零。

解决方案

改为以字符串作为输入,从字符串层面拆分、处理整数和小数部分:

def strip_trailing_zeros_keep_leading(num_str):
    if '.' in num_str:
        integer_part, decimal_part = num_str.split('.', 1)
        # 去除小数部分末尾的零
        cleaned_decimal = decimal_part.rstrip('0')
        # 若小数部分全为零,仅返回整数部分;否则保留处理后的小数部分
        return integer_part if not cleaned_decimal else f"{integer_part}.{cleaned_decimal}"
    # 无小数点时直接返回原字符串
    return num_str

测试验证

input_str = "0001202406040252523670952717.00"
print(strip_trailing_zeros_keep_leading(input_str))
# 输出:0001202406040252523670952717

额外测试场景:

  • 输入"00123.4500" → 输出"00123.45"
  • 输入"000.000" → 输出"000"
  • 输入"123" → 输出"123"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:13:17