For 列表循环

问题描述 投票:0回答:1

我正在尝试读取一个文件,删除以“#”开头的行,然后将剩余的行存储在一个列表中,我将尝试将它们拆分为元组。

文件“in.dat”如下

# 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

代码如下

# Reads file and returns a list of lines in string format
def read_data(fname):
    with open("in.dat", "r") as f:
        data = f.readlines()
    f.close()
    return data



# Takes a list of lines as input and returns a new list of lines with the 
# comment lines (the ones that begin with #) removed.
def remove_comment_lines(data):
    result = []
    for name in data:
        if len(name) <=30:
            result.append(data)
        print(result)
        return result

删除注释行(read_data(“in.dat”))

我已经尝试了我能想到的一切。我不知道如何从午夜开始计算每个时间并找到他们的时间。但在我做到这一点之前,我必须拥有没有注释行的列表,并且不能使用“/n”字符进行分割。

python function loops split iteration
1个回答
0
投票

这是一个如何读取文件并将数据放入列表中的示例(将步骤转换为整数):

data = []
with open("in.dat", "r") as f_in:
    for line in map(str.strip, f_in):
        # skip empty lines or lines beginning with #
        if line == "" or line.startswith("#"):
            continue
        data.append(line.split(":"))
        data[-1][-1] = int(data[-1][-1])

print(data)

打印:

[
    ["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],
]
© www.soinside.com 2019 - 2024. All rights reserved.