15-7数字字符串格式化

问题描述

小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。


测试样例

样例1:

输入:s = "1294512.12412"

输出:'1,294,512.12412'

样例2:

输入:s = "0000123456789.99"

输出:'123,456,789.99'

样例3:

输入:s = "987654321"

输出:'987,654,321'

python 复制代码
def solution(s: str) -> str:
    # 先处理字符串,移除前导零
    # 使用 lstrip('0') 移除前面的零
    # 如果移除后为空字符串,说明输入的是 "0" 或 "0.00" 等情况,设置为 "0"
    stripped_s = s.lstrip('0') or '0'

    # 查找小数点的位置
    if '.' in stripped_s:
        integer_part, decimal_part = stripped_s.split('.')
    else:
        integer_part, decimal_part = stripped_s, ''
    
    # 格式化整数部分,使用 format 函数和千分位格式
    # 将整数部分转为千分位形式
    formatted_integer_part = f"{int(integer_part):,}"

    # 组装最终的结果
    if decimal_part:
        result = f"{formatted_integer_part}.{decimal_part}"
    else:
        result = formatted_integer_part

    return result

if __name__ == '__main__':
    # 测试用例
    print(solution("1294512.12412") == '1,294,512.12412')  # 输出: True
    print(solution("0000123456789.99") == '123,456,789.99')  # 输出: True
    print(solution("987654321") == '987,654,321')  # 输出: True
相关推荐
智者知已应修善业20 分钟前
【51单片机8位数码管同时倒计时从9999】2024-1-25
c++·经验分享·笔记·算法·51单片机
洛水水23 分钟前
【力扣100题】86.柱状图中最大的矩形
算法·leetcode·职场和发展
渡之30 分钟前
GRiM-Net 深度解析 | 无人机 GNSS 拒止场景下两阶段跨视角视觉定位框架
深度学习·算法·动态规划·无人机
python-码博士34 分钟前
PyTorch 从零实现 Flow Matching:训练、采样、画图一条龙
人工智能·pytorch·python
测试仪器廖生135902563851 小时前
罗德与施瓦茨 FSP13频谱分析仪FSP30
网络·人工智能·算法
happymaker06261 小时前
LeetCodeHot100——560.和为K的子数组
算法
王小王-1231 小时前
基于Python的车联网数据聚合与可视化分析平台设计与实现
python·车联网·新能源汽车·车联网聚合分析
dtq04241 小时前
C语言刷题数组5,6(求平均值,求最大值)
c语言·数据结构·算法
郭梧悠1 小时前
Hash算法入门Hash冲突解决方案
算法·哈希算法
叫我:松哥1 小时前
基于Flask框架的校园二手书籍交易平台,注重校园场景的特殊需求,通过学号认证保障用户真实性
后端·python·sqlite·flask·bootstrap