当我从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]
所以,当代码正在读取"基础知识列表"如何更改以防止代码重复?
答案 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行的记录,因此依次是namerow
,sol
,pe
,ps
和你将创建带有这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的答案中一样。