如何从字符串提取多值并计算Yelp餐厅时间表总时长
解决Yelp数据集餐厅营业时间时长计算问题
核心思路
把每个时间段的开店、闭店时间转换成小时为单位的数值,直接做减法得到当日时长,最后累加所有日期的时长即可。以下是Python实现代码:
代码实现
# 示例时间表字典 hours_dict = { 'Friday': '8:0-23:0', 'Monday': '8:0-22:0', 'Saturday': '8:0-23:0', 'Sunday': '8:0-22:0', 'Thursday': '8:0-22:0', 'Tuesday': '8:0-22:0', 'Wednesday': '8:0-22:0' } total_duration = 0.0 daily_duration = {} for day, time_str in hours_dict.items(): # 拆分开店/闭店时间 open_time, close_time = time_str.split('-') # 转换为小时+分钟的整数格式 open_h, open_m = map(int, open_time.split(':')) close_h, close_m = map(int, close_time.split(':')) # 计算当日时长(转为小时单位) open_total = open_h + open_m / 60 close_total = close_h + close_m / 60 day_duration = close_total - open_total daily_duration[day] = day_duration total_duration += day_duration # 输出结果 print("每日营业时长(小时):", daily_duration) print("每周总营业时长(小时):", total_duration)
代码说明
- 拆分时间字符串:用
split('-')把每个日期的时间范围拆成开店和闭店两个字符串,再用split(':')拆分小时和分钟。 - 时间数值转换:把分钟转换成小时的小数形式(比如30分钟=0.5小时),方便直接做减法运算。
- 时长计算与累加:闭店时间的总小时数减去开店时间的总小时数,得到当日时长,同时累加到总时长中。
特殊情况处理
如果遇到跨天营业时间(比如22:0-2:0),需要在闭店时间的数值上加上24小时再计算,避免出现负数结果:
# 跨天情况的修正逻辑 if close_total < open_total: close_total += 24 day_duration = close_total - open_total
内容的提问来源于stack exchange,提问作者Tegh Singh
相关产品推荐
相关产品推荐

