2017-03-06 18 views
-1

私は特定のフォルダにある多くのcsvファイルのそれぞれから特定の行(行番号5)を印刷しようとしています。何らかの理由で、最初のファイルの正しい5行目を返しますが、残りの部分はすべて上書きします。私はそれがループのいくつかの種類に働いていると思うが、私はかなり理由/何/方法を見つけ出すことはできません。多くのcsvファイルから特定の行を読む、Python

for file in files: 
     j = 1 
     with open(file,'rU') as csvfile: 
      csv_reader = csv.reader(csvfile, delimiter = ',', quotechar ='|') 
      for row in csv_reader: 
       if j is 5: 
        print row 
       j += 1 
+0

...

csv_reader = csv.reader(csvfile) 

、それは魔法のように働いたに

csv_reader = csv.reader(csvfile, delimiter = ',', quotechar ='|') 

を変え 'jは5'で悪いです。 'j == 5'を実行します。次のファイルの問題は何ですか? –

+1

'j == 5'のときは' break 'しなければなりません。なぜなら、ファイルと何も関係がないからです。 –

+0

あなたとPatrickの両方に感謝します。ちょうど興味があります、どうして 'jは5 'が悪いのですか? –

答えて

1
for file in files: 
    with open(file, newline='') as f: 
     r = csv.reader(csvfile, delimiter = ',', quotechar ='|') 
     for i, row in enumerate(r, start=1): 
      if i == 5: 
       print(row) 
       break 

j is 5を使用しないでください。カウンターを手動で追跡する以上にenumerateを使用してください、間違いをするのは難しいです。 [OK]を

0

ので、私は

+1

あなたのデータにはあなたが考慮していないものがいくつかあったのでしょうか? –

+0

どうすれば確認できますか? –

+0

ウィンドウを開いている場合は、ファイルをテキストエディタで開き、 'Ctrl-F'を' | 'で開きます。あなたがLinuxを使っているなら、 'egrep '\'すべての行を '|' –

関連する問題