【python】 `parse_time_to_seconds` 在功能及健壮性上有以下主要区别
这两版 parse_time_to_seconds
在功能及健壮性上有以下主要区别:
特性 | 版本 A(第一段代码) | 版本 B(第二段代码) |
---|---|---|
类型转换 | 只做 time_str.strip() ,要求传入已是字符串,否则会在 .strip() 报错。 | 先做 str(time_str).strip() ,任何类型都能转换为字符串,更宽容。 |
支持格式 |
MM:SS.dd
HH:MM:SS.dd
- 纯秒数
SS.dd
或SS
| MM:SS.dd
(不区分两位或一位分钟)- 纯秒数
SS.dd
或SS
|
| 小时处理 | 支持HH:MM:SS.dd
(三段式);超过两段会按小时—分钟—秒计算。 | 不支持三段式;只拆两段,遇到三段式会直接抛IndexError
并返回 0。 |
| 空/特殊输入 |if not time_str or time_str=='0'
同样跳过。 | 同上。 |
| 出错提示 |print(f"⚠️ 时间解析错误: '{time_str}' -> {e}")
|print(f"⚠️ 时间解析失败: '{time_str}' -> {e}")
|
| 代码简洁度 | 分支更多,兼容性更强,但更冗长。 | 简洁扼要,只处理最常见的两种格式。 |
| 边界情况 |
"1:02"
(1 分 2 秒)"1:02.5"
(1 分 2.5 秒)"01:02:03.45"
(1 小时 2 分 3.45 秒)
|"1:02"
与"1:02.5"
同样正确"01:02:03.45"
会被当成两段式,parts[1]
="02"
,忽略后面的03.45
,并触发后续的IndexError
。 |
何时选择?
- 如果你需要 兼容“小时” 格式,或者要非常严格区分输入格式,就用版本 A;
- 如果你只关心“分:秒” 和“纯秒数”,而且想让任何类型的输入都能平滑转换,就用版本 B。