You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取FitBit数据文件并转换时间为午夜后分钟数求助

问题分析

你的代码已经完成文件读取、注释过滤和数据拆分,但minutes_since_midnight函数未正确实现时间到午夜后分钟数的转换逻辑——它仅遍历数据却未对时间字符串做解析计算,也未返回处理结果。我们需要重构时间转换逻辑,将HH.MMAM/PM格式的时间转为午夜后分钟数,最终生成(开始分钟, 结束分钟, 步数)的元组列表。

修正后的完整代码

import sys

def parse_time_to_minutes(time_str):
    # 拆分时间数字部分与AM/PM时段标识
    time_part, period = time_str[:-2], time_str[-2:]
    # 拆分小时和分钟并转为整数
    hours, minutes = map(int, time_part.split("."))
    
    # 处理12小时制转24小时制的特殊情况
    if period == "AM":
        hours = 0 if hours == 12 else hours
    else:
        hours = hours if hours == 12 else hours + 12
    
    # 计算午夜后总分钟数
    return hours * 60 + minutes

def process_fitbit_data(file_path):
    processed_data = []
    with open(file_path, "r") as f:
        for line in map(str.strip, f):
            # 跳过空行和注释行
            if not line or line.startswith("#"):
                continue
            # 拆分每行的时间和步数数据
            start_time, end_time, steps = line.split(":")
            # 转换时间为分钟数,步数转为整数
            start_min = parse_time_to_minutes(start_time)
            end_min = parse_time_to_minutes(end_time)
            # 存入元组
            processed_data.append((start_min, end_min, int(steps)))
    return processed_data

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("请传入数据文件路径作为命令行参数")
        sys.exit(1)
    result = process_fitbit_data(sys.argv[1])
    print(result)

关键说明

  1. 时间解析函数parse_time_to_minutes:

    • 拆分时间字符串的数字部分和时段标识,处理12小时制到24小时制的转换(如12AM转为0点,3PM转为15点)
    • 通过小时*60 + 分钟计算出午夜后的总分钟数
  2. 数据处理流程优化:

    • 读取文件时直接过滤无效行,拆分数据后同步完成时间转换和类型转换
    • 直接生成目标格式的元组,无需额外的列表转元组步骤
    • 修复原代码硬编码文件名的问题,改用命令行传入的参数
  3. 测试输出:
    针对你提供的原始数据,运行代码后会输出:

    [(570, 585, 220), (705, 743, 300), (705, 623, 302), (1665, 1703, 202), (1845, 1853, 90), (2085, 2093, 80), (2205, 2243, 1000), (3285, 3293, 102)]
    

内容的提问来源于stack exchange,提问作者user159

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:05:07