2016-03-30 17 views
1

リストを作成してCSVファイルに新しい列を作成する方法を理解しようとしています。アイデアは、私はcvsファイルを持っている、私はリストを作成するために各行の最後の項目を取って、それをシャッフルし、私はファイルの末尾に追加する必要があります。リストからCSVファイルに新しい列を作成する

私が遭遇したいくつかの問題は、私が修正したと思うものです: Pythonは文字列のリストを追加しないため、intに変換されます。 列ヘッダを削除し、後ろにそれを追加すること

私がこれまで持っていることです。私は今が午前問題は、私の最後のelse文は遅延の私のリストを反復処理していることである

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

考えます行の各要素にリストの各要素を追加します。したがって、アイテム1は8個の遅延を、アイテム2は8個の遅延を獲得します。

私が欲しいのは、アイテム1が最初のディレイに、アイテム2が2番目のディレイになるということです。

あなたがdelayのi番目の要素にアクセスしたい場合は、あなたのコードがある

答えて

0

....私は愚かな過ちのいくつかの並べ替えを作っているような気がしますが、私はそれが何であるかを把握することはできません正しい。しかし、for i in delayと言うので、iは既にdelayの要素です。最後の行でをiに変更してみてください。

5 
4 

をしかし、あなたがこれを行う場合:

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

listはインデックスのみ0とを持つ要素を持っているので、これは動作しません例は

戻ります
list = [5, 4] 
for i in list: 
    print i 

を下回っています1ではなく、4および5である。

関連する問題