2014-12-03 77 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