从txt文件中排序信息时重复代码 - Python

时间:2017-08-10 11:30:59

标签: python python-3.x repeat

当我从txt文件导入数据时,我在避免代码重复时遇到了一些问题,就像标题所说的那样。我的问题是,如果有一种更智能的方法来循环该功能。我对python一般都很陌生,所以我对这个领域不了解。

我使用的代码如下

with open("fundamenta.txt") as fundamenta:
    fundamenta_list = []
    for row in fundamenta:
        info_1 = row.strip()
        fundamenta_list.append(info_1)

namerow_1 = fundamenta_list[1]
sol_1 = fundamenta_list[2]
pe_1 = fundamenta_list[3]
ps_1 = fundamenta_list[4]
namerow_2 = fundamenta_list[5]
sol_2 = fundamenta_list[6]
pe_2 = fundamenta_list[7]
ps_2 = fundamenta_list[8]
namerow_3 = fundamenta_list[9]
sol_3 = fundamenta_list[10]
pe_3 = fundamenta_list[11]
ps_3 = fundamenta_list[12]

所以,当代码正在读取"基础知识列表"如何更改以防止代码重复?

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您可能希望从代码中创建一个函数,这样就可以避免重复相同的代码。

你可以这样做:

def read_file_and_save_to_list(file_name):
    with open(file_name) as f:
    list_to_return = []
    for row in f:
        list_to_return.append(row.strip())
    return list_to_return

然后你可以这样调用这个函数:

fundamenta_list = read_file_and_save_to_list("fundamenta.txt")

答案 1 :(得分:0)

我认为您的输入文件每个都有4行的记录,因此依次是namerowsolpeps和你将创建带有这4个字段的对象。假设您的对象名为MyObject,您可以执行以下操作:

with open("test.data") as f:
    objects = []
    while f:
        try:
            (namerow, sol, pe, ps) = next(f).strip(), next(f).strip(), next(f).strip(), next(f).strip()
            objects.append(MyObject(namerow, sol, pe, ps))
        except:
            break

然后您可以objects[0]等方式访问您的对象。

你甚至可以把它变成一个返回对象列表的函数,就像在Moyote的答案中一样。