2017-06-16 58 views
0

我剛開始學習python。我需要將一個csv文件數據存儲到元組列表中:元組表示每行上的值,列表以存儲所有行。 我有問題的功能是當我需要過濾列表。基本上只創建符合條件的列表副本。我已成功將所有元組附加到列表中,但是當我需要將元組追加到新列表中時,它不起作用。Python 3,如何將元組追加到列表中

def filterRecord(): 
    global filtered 
    filtered = list() 
    try: 
     if int(elem[2])>= int(command[-1]): #the condition 
        #if I print(elem) here, all results are correct 
     filtered.append(tuple(elem)) #tuples do not add into the list 
            #len(filtered) is 0 
    except ValueError: 
     pass 


def main(): 
    infile = open('file.csv') 
    L = list() 
    for line in infile: 
     parseLine() #a function store each row into tuple 
    for line in stdin: 
     command = line.split() #process user input, multiple lines 
     for elem in L: 
      if command == 0: 
       filterRecord() 

如果我運行它,程序不響應。如果我強制停止它,回溯始終是for line in stdin 此外,我不允許在此程序中使用csv模塊。

+0

什麼是過濾條件? –

+0

@WillemVanOnsem當elem [2]大於或等於用戶輸入的數字 –

回答

0

我認爲你需要import sys和使用for line in sys.stdin

+0

我確實輸入了sys –

+0

您是否在執行'sys.stdin'而不是'stdin'?否則,你能發佈完整的錯誤信息嗎? –

+0

我做了'從sys import stdin'。我沒有收到任何錯誤消息,該程序只是繼續運行,直到我強制關閉它 –

-1

你應該使用Python的內置庫解析CSV文件(除非這有點像一個家庭作業):https://docs.python.org/2/library/csv.html

然後你可以這樣做:

import csv 
with open ('file.csv', 'r') as f: 
    reader = csv.DictReader(f, delimiter=",") 
+0

「另外,我不允許在此程序中使用csv模塊。」 –