如何将复杂内容从文件加载到Python程序中?

时间:2015-11-02 23:17:09

标签: python

我的编程分配输入有问题:

  

镇上的人每周去购物很多次。镇长希望记录每个人每次购物时购买的物品数量。他只监视三个房子。在每个房子里,有五个家庭成员。每个家庭的数据应分开保存。   代码来解决这个程序。

现在,必须加载文件内容并将其保存到文件中。 我已经计划将输入(对于第一个任务)看起来像文件本身中的以下内容,并且我希望它在加载到程序中时显示为:

[['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', ']', ']']

我该如何解决这个问题?

注意:相同的文件结构将用于加载其他两个系列的数据。

1 个答案:

答案 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]

我希望这会让你失意。你仍然有许多小的决定要做或修理。