我需要从文件中获取数据,删除以注释哈希开头的行,然后将该文件读入列表中。然后将该列表转换为开始时间、结束时间和步数的列表元组。
这是文件:以开始时间、结束时间和步数形式(来自 FitBit 数据)
# read from file data about one day
# format: start_time:end_time:#steps
09.30AM:09.45AM:220
11.45AM:12.23PM:300
11.45AM:10.23AM:302
2.45PM:3.23PM:202
3.45PM:3.53PM:90
5.45PM:5.53PM:80
6.45PM:7.23PM:1000
10.45PM:10.53PM:102
这是我到目前为止的代码,其中包含一个函数,用于读取数据并将其拆分为子列表列表,然后将其拆分为元组。 我无法解决的问题是迭代每个开始和结束时间并找到自午夜以来的分钟数。并将它们存储为整数我不知道如何迭代子列表中的项目。
import sys
fname = sys.argv[1]
#Lines 26 - 34 reads file "in.dat",removes the comment lines,and stores each of the lines as a seperate tuple list in the form [str , str, str]
data = []
with open("in.dat", "r") as f:
for line in map(str.strip, f):
if line == "" or line.startswith("#"):
continue
data.append(line.split(":"))
data[-1][-1] = int(data[-1][-1])
print(data)
def minutes_since_midnight(data):
x = []
for x in data:
for y in x:
y.split(".")
print(x)**
minutes_since_midnight(data)
def convert_to_tuples(data):
result = []
for sublist in data:
result.append(tuple(sublist))
return result
result = convert_to_tuples(data)
因此,我的问题又在于如何将“ 分钟_自_午夜” 函数中的开始时间和结束时间转换为自午夜以来的分钟数。然后使用以下函数将该数据存储到元组中。
我对 Python 非常陌生,因此我们将不胜感激任何帮助。
预期结果是如下列表 [(570, 585, 220 , ...]
假设您知道评论行数(或者您可以使用代码查找该数字),则可以使用
pandas
import pandas as pd
# need to specify the seperator and skiprows
df = pd.read_csv(filepath, sep=":", skiprows=2, header=None, names=['start', 'end', 'steps'])
输出:
开始 | 结束 | 步骤 |
---|---|---|
09.30AM | 09.45AM | 220 |
11.45AM | 12.23PM | 300 |
11.45AM | 10.23AM | 302 |
2.45PM | 3.23PM | 202 |
3.45PM | 3.53PM | 90 |
5.45PM | 5.53PM | 80 |
6.45PM | 7.23PM | 1000 |
10.45PM | 10.53PM | 102 |
然后,如果需要,您可以使用
df.to_list()
将其转换为列表