複数のリストに複数のcsvの列を追加しようとしています。列1はリスト1に入り、列2はリスト2に入ります。範囲から作成されたリストに追加する
しかし、複数のcsvファイルで動作するように、列数をハードコーディングできないようにしたいと考えています。だから私はカラム数を使ってリスト数を指定しています。
これらのリストに値を追加しようとすると、私はぶらぶらしてきます。右の列を右のリストに割り当てることができるはずのカウントを開始しましたが、最初のループの後にループが終了し、他の列がリストに追加されないようです。
import csv
#open csv
f = open('attendees1.csv')
csv_f = csv.reader(f)
#count columns
first_row = next(csv_f)
num_cols = len(first_row)
#create multiple lists (within lists) based on column count
d = [[] for x in xrange(num_cols)]
#initiate count
count = 0
#im trying to state that whilst the count is less than the amount of columns, rows should be appended to lists, which list and which column will be defined by the [count] value.
while count < (num_cols):
for row in csv_f:
d[count].append(row[count])
count += 1
print count
print d
これは私がちょうど既存のコード、upvoteに基づいて策定されたよりもはるかに良く答えです。 OPコードで現在開いているファイルを開くためにあなたの答えを 'with'で変更できますか?プログラム全体は4行のコードで実行できます。 – roganjosh
これを読んでいただきありがとうございます! whileループの各インスタンスの後に反復が残らない理由がありますか?それを終了させない方法はありますか? –
@saph_top:ファイルがディスクから読み込まれるときにCSVファイルが実行されますが、反復されます。ファイル全体をメモリに読み込まなくて済むように、このようにします。 'while'ループが繰り返されるたびにリセットするには、ファイルを巻き戻して最初からやり直す必要があります。 – PaSTE