私は、いくつかのcsvファイルを操作しようとしている絶対的なプログラミング初心者です。私が全体的にやろうとしていることはもっと複雑ですが、私は現在この問題に固執しています:
私が持っているcsvファイルには、固定数の「列」と可変数の行が含まれています。私がやりたいのは、ディレクトリ内の各csvファイルを開き、メモリ内にファイル値を2Dリストに格納してから、そのリストからデータの1つの「列」をプルすることです。これをループで行うことで、各csvファイルのデータの1列を含むリストを追加できます。
単一のファイルに対してこれを行うと、次のように機能します。
csvFile = 'testdata.csv'
currentFile = csv.reader(open(csvFile), delimiter=';')
errorValues = []
for data in currentFile:
rows = [r for r in currentFile] #Store current csv file into a 2d list
errorColumn = [row[34] for row in rows] #Get position 34 of each row in 2D list
errorColumn = filter(None, errorColumn) #Filter out empty strings
errorValues.append(errorColumn) #Append one 'column' of data to overall list
ディレクトリ内のすべてのファイルに対してループしようとすると、「リストインデックスが範囲外です」というエラーが発生します。
dirListing = os.listdir(os.getcwd())
errorValues = []
for dataFile in dirListing:
currentFile = csv.reader(open(dataFile), delimiter=';')
for data in currentFile:
rows = [r for r in currentFile] #Store current csv file into a 2d list
errorColumn = [row[34] for row in rows] #Get position 34 of each row in 2D list
errorColumn = filter(None, errorColumn) #Filter out empty strings
errorValues.append(errorColumn) #Append one 'column' of data to overall list
errorColumn = [] #Clear out errorColumn for next iteration
エラーは'errorColumn= [row [34] for rowinrows]'で発生します。私はこれを行うためにあらゆる種類の方法を試しましたが、常に範囲外のインデックスエラーに失敗しました。作業スクリプトを使用して1つずつテストしたので、csvファイルに問題はありません。何が問題なのですか?
助けてくれてありがとう。