2017-06-16 4 views
0

Ich habe gerade angefangen, Python zu lernen. Ich muss eine CSV-Datei Daten in eine Liste von Tupeln speichern: Tupel, um die Werte in jeder Zeile darzustellen, Liste, um alle Zeilen zu speichern. Die Funktion, mit der ich Probleme habe, ist, wenn ich die Liste filtern muss. Erstellen Sie im Grunde eine Kopie der Liste mit den Kriterien, die den Kriterien entsprechen. Ich habe alle Tupel erfolgreich an eine Liste angehängt, aber wenn ich die Tupel in eine neue Liste einfügen muss, funktioniert es nicht.Python 3, wie Tupel in die Liste eingefügt werden

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() 

Wenn ich es ausführen, reagiert das Programm nicht. Wenn ich es stoppe, ist das Traceback immer for line in stdin Außerdem darf ich das csv-Modul in diesem Programm nicht verwenden.

+0

was ist das Filterkriterium? –

+0

@WillemVanOnsem wenn elem [2] mehr oder gleich einer Zahl ist, die der Benutzer eingegeben hat –

Antwort

0

Ich glaube, Sie zu import sys brauchen und verwenden for line in sys.stdin

+0

ich importierte sys –

+0

Hast du 'sys.stdin' statt nur' stdin'? Könnten Sie sonst die vollständige Fehlermeldung posten? –

+0

Ich habe 'von sys import stdin'. Ich bekomme keine Fehlermeldung, das Programm läuft einfach weiter, bis ich es schließe –

-1

sollten Sie die verwenden Python integrierte Bibliothek csv-Dateien zu analysieren (es sei denn, dies so etwas wie eine Hausaufgabe ist): https://docs.python.org/2/library/csv.html.

können Sie dann so etwas wie:

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

"Außerdem darf ich das csv-Modul in diesem Programm nicht verwenden." –

Verwandte Themen