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
相关推荐
love530love17 小时前
【笔记】把已有的 ComfyUI 插件发布到 Comfy Registry(官方节点商店)全流程实录
人工智能·windows·笔记·python·aigc·comfyui·torchmonitor
星火飞码iFlyCode17 小时前
iFlyCode实践规范驱动开发(SDD):招考平台报名相片质量抽检功能开发实战
java·前端·python·算法·ai编程·科大讯飞
以为不会掉头发的詹同学17 小时前
【TCP通讯加密】TLS/SSL 证书生成、自签名证书、请求 CA 签发证书以及使用 Python TCP 服务器与客户端进行加密通讯
服务器·python·tcp/ip·ssl
leaves falling17 小时前
c语言-根据输入的年份和月份,计算并输出该月份的天数
c语言·开发语言·算法
jghhh0117 小时前
锥束CT(CBCT)三维重构算法:FDK算法详解与实现
线性代数·算法·重构
世界唯一最大变量17 小时前
此算法能稳定求出柏林52城问题最优解7540.23(整数时为7538),比传统旅行商问题的算法7544.37还优
前端·python·算法
元亓亓亓17 小时前
LeetCode热题100--139. 单词拆分--中等
算法·leetcode·职场和发展
Eloudy17 小时前
通过示例看 C++ 函数对象、仿函数、operator( )
开发语言·c++·算法
superman超哥17 小时前
仓颉高性能实践:内存布局优化技巧深度解析
c语言·开发语言·c++·python·仓颉
释怀°Believe17 小时前
Daily算法刷题【面试经典150题-6️⃣kadane/】
算法·面试·职场和发展