2014-12-19 115 views
0

我有一個包含以下數據的CSV文件一個列表:製作滿足條件

1,1,3,2,2,1 
2,1,3,2,1,1 
3,2,4,2,7,3 
4,1,3,2,3,1 
5,3,3,1,1,1 

和我想創建具有其中用於第二列具有1第六列的單元的明細表。總之,最終的結果,我想是[1, 1, 1]

這裏是我寫的代碼:

input = open("C:\\test.txt", "r") 

for line in input.readlines(): 
    line = line.strip() 
    no, grade, gpa, sex, preview, review = line.split(',') 

    listno1 = [] 
    a = float(grade) 
    if a == 1: 
     listno1.append(int(review)) 

當我打印,事實證明這樣的:

[] 
[] 
[] 
[] 
[1] 
[2] 
[] 
[] 
[4] 
[] 

幫助嗎?我希望堅持使用列表。

+0

你在循環中有'listno1 = []',所以你每次都清理它。 –

回答

3

您正在爲每一行創建列表,而不是僅在循環外創建一次列表。

您也重新發明了CSV輪;改爲使用csv module。因爲你選擇只是其中一個條件得到滿足每一行的一列,你可以使用列表理解:

import csv 

with open("C:\\test.txt", "r") as infile: 
    reader = csv.reader(infile) 
    listno1 = [int(row[5]) for row in reader if int(row[1]) == 1] 

這基本上做同樣的事情:

import csv 

with open("C:\\test.txt", "r") as infile: 
    reader = csv.reader(infile) 
    listno1 = [] 
    for no, grade, gpa, sex, preview, review in reader: 
     grade = int(grade) 
     if grade == 1: 
      listno1.append(int(review)) 

但在更緊湊符號。

+0

更簡潔使用'如果grade ==「1」'沒有強制轉換爲int –