案例一
小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。
小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。
代码一
import re
def solution(s: str) -> str:
secondStr = ""
result = s
if s.startswith('0'):
result = s.strip('0')
if result.find(".", 0, len(result)) != -1:
fisrtStr = result.split(".")[0][::-1]
secondStr = result.split(".")[1]
else:
fisrtStr = result[::-1]
if secondStr != "":
resultStr = addSymbol(fisrtStr) + "." + secondStr
else:
resultStr = addSymbol(fisrtStr)
return resultStr
def addSymbol(fisrtStr):
resultStr = ""
for x in range(0, len(fisrtStr), 3):
resultStr += fisrtStr[x:x + 3] + ","
return resultStr[::-1].replace(",", "", 1)
def solution_2(s: str) -> str:
# 去除前导零 正则表达式 re操作
result = re.sub(r'^0+', '', s)
# 分割整数和小数部分
if '.' in result:
fisrtStr, secondStr = result.split('.')
else:
fisrtStr, secondStr = result, ''
# 添加千分位逗号
fisrtStr = fisrtStr[::-1]
resultStr = ''
for x in range(0, len(fisrtStr), 3):
resultStr += fisrtStr[x:x + 3] + ','
resultStr = resultStr[::-1].replace(',', '', 1)
# 拼接整数和小数部分
if secondStr:
resultStr += '.' + secondStr
return resultStr
if __name__ == '__main__':
print(solution("1294512.12412") == '1,294,512.12412')
print(solution("0000123456789.99") == '123,456,789.99')
print(solution("987654321") == '987,654,321')
案例一plus
import re
def solution(s):
targetStr = re.sub(r'^0+', '', s)
if '.' in targetStr:
integer_str, decimal_str = targetStr.split('.')
else:
integer_str, decimal_str = targetStr, None
integer_str = integer_str[::-1]
qian_fen_str = ''
for x in range(0, len(integer_str), 3):
qian_fen_str += integer_str[x:x + 3] + ","
resultStr = qian_fen_str[::-1].replace(",", "", 1)
if decimal_str is not None:
resultStr = resultStr + "." + decimal_str
return resultStr
if __name__ == '__main__':
print(solution("1294512.12412") == '1,294,512.12412')
print(solution("0000123456789.99") == '123,456,789.99')
print(solution("987654321") == '987,654,321')
案例一ultra
import re
from datetime import datetime
def solution(s):
targetStr = re.sub(r'^0+','',s)
if '.' in targetStr:
firstStr,secondStr = targetStr.split(".")
else:
firstStr, secondStr = targetStr, None
firstStr = "{:,}".format(int(firstStr))
resultStr = firstStr
if secondStr is not None:
resultStr += "." + secondStr
return resultStr
def formatTwoNum():
value = 123.456789
return "The value is: {:.2f}".format(value)
def qianweifengefu():
number = 1234567.56
return "Formatted number: {:,}".format(number)
def baifenbigeshi():
percentage = 0.25
return "Formatted percentage: {:.2%}".format(percentage)
def fromatdate():
now = datetime.now()
return "Current date and time: {:%Y-%m-%d %H:%M:%S}".format(now)
if __name__ == '__main__':
print(solution("1294512.12412") == '1,294,512.12412')
print(solution("0000123456789.99") == '123,456,789.99')
print(solution("987654321") == '987,654,321')
"""格式化常用"""
print(formatTwoNum())
print(qianweifengefu())
print(baifenbigeshi())
print(fromatdate())