Python 字符串处理及格式化 | 豆包MarsCode AI刷题

77 阅读3分钟

该代码定义了一个名为 solution 的函数,它接收一个字符串 s。函数先按 . 分割字符串,对分割出的整数部分去除左边多余的 0 并格式化为带千位分隔符的形式,然后根据原字符串是否有小数部分,决定 返回格式化后的整数部分还是将其与小数部分重新组合后的字符串。

代码解释

  1. 函数定义

def solution(s: str) -> str:

定义了一个名为 solution 的函数,它接受一个字符串类型的参数 s,并且函数的返回值也是字符串类型。

  1. 分割字符串
parts = s.split('.')

这行代码使用字符串的 split 方法,以 . 作为分隔符,将输入的字符串 s 分割成多个部分,并将结果存储在列表 parts 中。例如,如果输入字符串是 "123.45",那么 parts 将会是 ["123", "45"]

  1. 处理整数部分
integer_part = parts[0].lstrip('0')
if integer_part == '':
    integer_part = '0'

首先,从 parts 列表中取出第一个元素(即字符串中 . 之前的部分,也就是整数部分),然后使用 lstrip 方法去除该整数部分左边的所有 0。如果去除 0 后得到的字符串为空,就将 integer_part 赋值为 0。例如,对于输入 "00123",经过 lstrip('0') 后会得到 "123";而对于输入 "000",经过处理后 integer_part 会被赋值为 "0"

  1. 格式化整数部分
formatted_integer = '{:,}'.format(int(integer_part))

这里将处理后的整数部分 integer_part 先转换为整数类型(使用 int 函数),然后使用字符串的 format 方法结合 {:,} 格式化字符串,将整数按照每三位添加一个逗号的方式进行格式化。例如,整数 1234567 会被格式化为 "1,234,567"

  1. 处理小数部分并返回结果
if len(parts) > 1:
    return f'{formatted_integer}.{parts[1]}'
else:
    return formatted_integer

如果 parts 列表的长度大于 1,说明输入的字符串包含小数部分,那么就将格式化后的整数部分和原来字符串中 . 之后的部分(即小数部分 parts[1])重新组合成一个带有小数点的字符串并返回。如果 parts 列表长度不大于 1,也就是没有小数部分,就直接返回格式化后的整数部分。

知识点和原理

  • 字符串处理方法

    • split 方法:用于按照指定的分隔符将字符串分割成多个子字符串,并返回一个列表。这是处理包含特定分隔符的字符串,提取不同部分的常用方法。
    • lstrip 方法:用于去除字符串左边的指定字符(默认是去除空白字符)。在这里用于去除整数部分左边多余的 0,以便得到更规范的整数表示形式。
  • 字符串格式化

    • 使用 format 方法结合特定的格式化字符串(如 {:,})来对整数进行格式化。这种格式化方式遵循特定的格式规则,在这里是按照千位分隔符的方式对整数进行美化显示,使整数的表示更加清晰易读,常用于处理货币金额、较大的数字等场景。
  • 条件判断和逻辑控制

    • 通过 if-else 语句根据不同的条件(这里是判断字符串是否包含小数部分,即 len(parts) > 1)来决定函数的返回值。这体现了根据程序运行时的不同情况进行不同处理的逻辑控制能力,是编程中实现不同业务逻辑的基础。
  • 数据类型转换

    • 使用 int 函数将字符串类型的整数部分转换为整数类型,以便后续进行格式化等操作。在编程中,经常需要在不同数据类型之间进行转换,以满足各种计算和处理的需求。