2016-03-30 5 views
1

Ich habe versucht, herauszufinden, wie eine Liste zu nehmen und damit eine neue Spalte in meiner CSV-Datei erstellen. Die Idee ist, dass ich eine cvs-Datei habe, ich habe das letzte Element jeder Zeile genommen, um eine Liste zu erstellen, mische es und dann muss ich es am Ende der Datei hinzufügen.Erstellen einer neuen Spalte in einer CSV-Datei aus einer Liste

Einige Probleme, die ich lief, aber "denke" ich habe behoben sind: Python wird keine Liste der Zeichenfolgen anhängen, also konvertierte ich zu int. . Entfernen des Spaltenkopf und das Hinzufügen sie zurück in

Was ich habe, so weit ist:

def fun(): 
    import csv 
    import random 

    f = open('CSVFUN.csv') 
    csv_f = csv.reader(f) 
    ISI = [] 

    for line in csv_f: 
     ISI.append(line[4]) 
    ISI = ISI[1:] 
    random.shuffle(ISI) 
    delay = [int(i) for i in ISI] 
    print(delay) 

    with open('CSVFUN.csv','r') as csvinput: 
     with open('CSVOUTPUT.csv','w') as csvoutput: 
      writer = csv.writer(csvoutput, lineterminator='\n') 
      reader = csv.reader(csvinput) 

      for row in reader: 
       if row[0] == 'practicesentence': 
        writer.writerow(row+['FINALaudioDelay']) 
       else: 
        for i in delay: 
         writer.writerow(row+[delay[i]]) 

Ich denke, die Frage, die ich jetzt habe, ist, dass meine letzte else-Anweisung durch meine Liste der Verzögerung Iterieren und Hinzufügen jedes Elements der Liste zu jedem Element in einer Reihe. So erhält der Gegenstand 1 8 Verspätungen, der Gegenstand 2 8 Verspätungen und so weiter.

Was ich will, ist für Punkt 1 mit der ersten Verzögerung gehen, Punkt 2 mit der zweiten Verzögerung und so weiter.

Ich fühle mich wie ich bin eine Art von dummen Fehler zu machen, aber ich kann einfach nicht herausfinden, was es ist ....

Antwort

0

Wenn Sie das i-te Element von delay zugreifen wollen, dann ist Ihr Code richtig. Da Sie jedoch sagen, for i in delay, ist i bereits ein Element von delay. Versuchen Sie, delay[i] für nur i in der letzten Zeile zu ändern. Ein Beispiel hierfür ist unter

list = [5, 4] 
for i in list: 
    print i 

Das zurückkehren wird:

5 
4 

aber wenn Sie dies tun:

list = [5, 4] 
for i in list: 
    print list[i] 

Das wird nicht funktionieren, weil list nur Elemente mit den Indizes 0 hat und 1, nicht 4 und 5.

Verwandte Themen