如何在Python中结合列表实现含天数的时间到秒数转换及代码调整
解决Python时间转换嵌套函数的两个需求
1. 给嵌套函数添加天数参数
原来的嵌套函数仅支持时分秒转秒,我们可以在最外层新增一个接受天数参数的函数,保持嵌套结构的同时扩展功能:
def convert_days(days=0): def convert_hours(hours=0): def convert_minutes(minutes=0): def convert_seconds(seconds=0): # 1天=24小时,先把天数转成小时再代入原有计算逻辑 total_hours = days * 24 + hours return ((total_hours * 60) + minutes) * 60 + seconds return convert_seconds return convert_minutes return convert_hours
这个四层嵌套函数的调用方式为 convert_days(天数)(小时)(分钟)(秒),比如测试单个值:
# 测试单个转换:1天1小时1分1秒 result = convert_days(1)(1)(1)(1) print(result) # 输出:90061
2. 实现批量转换列表数据
针对给定的列表格式,我们可以通过正则提取数值的方式批量解析每个字符串中的时间参数,再调用上面的嵌套函数完成转换:
import re # 批量处理的输入数据 data = ["21 day 20 hour 9 minute 20 sec", "19 day 14 hour 0 minute 13 sec", "1 day 1 hour 1 minute 1 sec"] # 遍历每个时间字符串进行转换 for idx, time_str in enumerate(data, 1): # 用正则匹配所有数字,按顺序对应days、hours、minutes、seconds nums = list(map(int, re.findall(r'\d+', time_str))) days, hours, minutes, seconds = nums # 调用嵌套函数转换 total_seconds = convert_days(days)(hours)(minutes)(seconds) print(f"第{idx}条数据转换结果:{total_seconds}")
运行结果
第1条数据转换结果:1917560 第2条数据转换结果:1682413 第3条数据转换结果:90061
补充说明
- 正则表达式
r'\d+'可以精准提取字符串中的所有数字,无需关注单位的具体写法(只要数字顺序是day→hour→minute→sec即可); - 如果需要兼容更多格式(比如缩写如
d、h),只需调整正则匹配逻辑,核心转换逻辑无需改动。
内容的提问来源于stack exchange,提问作者soyaa
相关产品推荐
相关产品推荐

