2014-12-03 50 views
-5

我想从我的文本文件中的数据打印到蟒蛇读取数据只读取最后一行

   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 
+0

有助于查看txt文件中的内容。 – user2097159 2014-12-03 13:17:46

+0

我在我的文本文件中添加了什么 – JJA 2014-12-03 13:19:23

+0

对于初学者来看看python字典以及如何对它们进行排序,这将极大地帮助您 – user2097159 2014-12-03 13:21:44

回答

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) 

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

+0

谢谢,它现在打印我的数据。我正在计划对这些数据进行排序,现在我已经开始工作了,这是否会工作在代码的第一部分?当我尝试第二部分的时候, “语法无效”,并突出显示在“names_scores = [e [0],e [1] for e [li.split(”:“)for text in text_line]行中的”for“。” – JJA 2014-12-03 15:31:58

+0

修复了错误name_scores线,省略了一些大括号。 – selllikesybok 2014-12-03 16:22:26