我的编程分配输入有问题:
镇上的人每周去购物很多次。镇长希望记录每个人每次购物时购买的物品数量。他只监视三个房子。在每个房子里,有五个家庭成员。每个家庭的数据应分开保存。 代码来解决这个程序。
现在,必须加载文件内容并将其保存到文件中。 我已经计划将输入(对于第一个任务)看起来像文件本身中的以下内容,并且我希望它在加载到程序中时显示为:
[['James',0],['Katherine',0],['Jacob',0],['Michael',0],['Cyndia',0]]
但是,我目前的代码是:
Class11A = []
def Class(FileLabel,FileName,ReadLabel,Class):
FileLabel = open(FileName,mode = 'r+')
ReadLabel = FileLabel.read()
for line in ReadLabel:
Class.append(line)
Class('Class11A','Class 11A.txt','Class11ATempList',Class11A)
print (Class11A)
然而,代码加载内容如下:
['[', '[', "'", 'J', 'a', 'm', 'e', 's', "'", ',', '0', ']', ',', '[', "'", 'K', 'a', 't', 'h', 'e', 'r', 'i', 'n', 'e', "'", ',', '0', ']', '[', "'", 'J', 'a', 'c', 'o', 'b', "'", ',', '0', ']', '[', "'", 'M', 'i', 'c', 'h', 'a', 'e', 'l', "'", ',', '0', ']', '[', "'", 'C', 'y', 'n', 'd', 'i', 'a', "'", ',', '0', ']', ']']
我该如何解决这个问题?
注意:相同的文件结构将用于加载其他两个系列的数据。
答案 0 :(得分:1)
主要问题是 read()会读取整个文件。 ReadLabel现在是一个字符串的整个文件内容。你的命名似乎认为它仍然是逐行的形式,但它只是一个字符串。因此,行只是一系列字符,您可以单独附加到列表中。
一种可能的修复方法是使用eval()操作将字符串转换为列表:
family_list = eval(ReadLabel)
这将为您提供五个列表的列表。举例说明:
target = "[['James',0],['Katherine',0],['Jacob',0],['Michael',0],['Cyndia',0]]"
target_list = eval(target)
print len(target_list), target_list[1]
这给出了输出
5 ['Katherine', 0]
我希望这会让你失意。你仍然有许多小的决定要做或修理。