Python将类2h 28min格式时长字符串转纯分钟数的简便实现方法
电影时长字符串转总分钟数的简便实现
核心需求
将格式为Xh Ymin的电影时长字符串转换为总分钟数,计算规则为:小时数值×60 + 分钟数值,例如2h 28min转换后结果为148分钟。
现有代码的冗余点
- 手动实现字符拆分函数,逐字符提取小时数字的逻辑完全多余
- 依赖split后的固定列表位置判断小时、分钟的位置,遇到无空格、缺某一段时长的场景容易触发索引越界错误
- 重复调用正则提取数字,逻辑分散、冗余度高
简便实现方案
用单条正则一次性匹配所有带单位的数值片段,自动按单位计算累加值,不需要手动判断单位位置、不需要自定义拆分函数:
import re def calc_total_minutes(time_str): total_min = 0 # 兼容带空格/无空格、缺小时/缺分钟的常见输入格式 for num, unit in re.findall(r'(\d+)\s*(h|min)', time_str): num = int(num) total_min += num * 60 if unit == 'h' else num return total_min
方案对比优势
- 代码量仅为原实现的1/3,删掉了冗余的自定义拆分逻辑、固定位置判断逻辑
- 容错性更强:不管输入是
2h28min(无空格)、3h(仅小时)、75min(仅分钟)、1h 09min都能正常计算,不会因为split后列表长度不足触发报错 - 扩展性好:后续如果需要支持其他时间单位,只需要在正则匹配规则里补充对应单位的判断逻辑即可,不需要重构主体代码
内容的提问来源于stack exchange,提问作者Amr
相关产品推荐
相关产品推荐

