Python解决“数字字符串千分位转化”问题
- 问题
- 样例
- 解决
- 代码
问题
A在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。A还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助A编写程序,完成这个任务。
样例
样例1:
输入:s = “1294512.12412”
输出:‘1,294,512.12412’
样例2:
输入:s = “0000123456789.99”
输出:‘123,456,789.99’
样例3:
输入:s = “987654321”
输出:‘987,654,321’
解决
字符串处理和格式化输出的知识,是一道典型的字符串处理问题。
题目要求将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。同时,输入的数字字符串前面可能会有无用的 0,这些也需要精简掉。核心信息是处理整数部分和小数部分,分别进行格式化,并在整数部分添加千分位逗号。
使用 split 方法可以根据指定的分隔符将字符串分割成多个部分。
使用 format 方法可以对字符串进行格式化输出,例如添加千分位逗号。
rstrip 方法用于去除字符串末尾指定的字符。
代码
from collections import Counterdef solution(s:str) -> str:# 分割小数整数部分if '.' in s:integer_part, decimal_part = s.split('.')else:integer_part, decimal_part = s, None# 讲整数部分分为,千分位制("{:,}" 是格式化字符串的一种方式,表示在数字中插入千分位逗号。)formatted_integer = "{:,}".format(int(integer_part))# 拼接小数和整数部分if decimal_part:s = formatted_integer + '.' + decimal_partelse:s = formatted_integer# 要删除多余的0部分return s.rstrip('0').rstrip('.')if __name__ == '__main__':print(solution(s = "1294512.12412"))print(solution(s = "0000123456789.99"))print(solution(s = "987654321"))
输出:
1,294,512.12412
123,456,789.99
987,654,321