从txt文件读取数据只读取最后一行

时间:2014-12-03 13:15:06

标签: python text-files

我试图将文本文件中的数据打印到python

                text_file = open ("Class1.txt", "r")
                data = text_file.read().splitlines()
                for li in data:
                    namelist = li.split(":")[0]
                    scorelist = li.split(":")[1]

                print (namelist)
                print (scorelist)
                text_file.close()

我的文字文件有:

Jim:13524
Harry:3
Jarrod:10
Jacob:0
Harold:5
Charlie:3
Jj:0

它只显示最后一个条目

外壳:

Would you like to view class 1, 2 or 3? 1
Jj
0

1 个答案:

答案 0 :(得分:0)

问题在于,每次遍历循环时,您都会覆盖namelistscorelist的值。您需要将每个项目添加到列表中。通常使用list.append()或列表推导将列表中的项顺序添加到列表中。阅读文档,或做一些教程?

要实际创建列表,您可以这样做:

namelist, scorelist = [],[]
for li in data:
    namelist.append(li.split(":")[0])
    scorelist.append(li.split(":")[1])

或者,这可能是一种更好的整体方法:

        with open("Class1.txt", "r") as text_file:
            names_scores = [(e[0],e[1]) for e in [li.split(":") for li in text_file]

        for name,score in name_scores:
            print(name,score)

这假设您真的只想提取名称和分数并打印出来,而不是做任何其他事情。处理和存储数据的方式很大程度上取决于从文件中提取后使用它的方式。