0

ディレクトリ内のいくつかの CSV ファイルを反復処理し、各 CSV ファイル (Excel で開いたときに見つかったセルの場所) から特定のセル (同じセルの場所) を取得してから、同様のすべてのセルを単一の CSV または xls ファイルに投稿しようとしています。他の後。

私は以下のコードを書きました (いくつかの調査の助けを借りて) が、リストの最初の csv ファイルを繰り返し処理し、リスト内の CSV ファイルの数に応じて毎回同じ値を出力しています。誰かが私を正しい方向に向けることができますか?

これが私の貧弱な試みです!

import xlwt
import xlrd
import csv
import glob
import os


files = ['1_IQ_QTA.csv','2_IQ_QTA.csv','3_IQ_QTA.csv','4_IQ_QTA.csv']
n = 0
row = 0
filename = ('outputList.csv', 'a')
fname = files[n]
workbookr = xlrd.open_workbook(fname)
sheetr = workbookr.sheet_by_index(0)
workbookw = xlwt.Workbook()
sheetw = workbookw.add_sheet('test')

while n<len(files):
    fname = files[n]
    workbookr = xlrd.open_workbook(fname[n])
    data = [sheetr.cell_value(12, 1) for col in range(sheetr.ncols)]

    for index, value in enumerate(data):
        sheetw.write(row, index, value)
        workbookw.save('outputList.csv')
    row = row +1
    n = n+1    

workbookw.save('outputList.csv')

私のコードはまだ少し乱雑です。さまざまな試みからコードが残っている可能性があります。

ありがとうございます

4

3 に答える 3

0

while ループの次の行にエラーがあると思います。

workbookr = xlrd.open_workbook(fname[n])

でなければなりません:

workbookr = xlrd.open_workbook(fname)

そうしないと、ワークブックはループの外側で設定したままになります。

fname = files[n]
workbookr = xlrd.open_workbook(fname)    

これはリストの最初のファイルです。

于 2013-10-10T11:23:49.193 に答える
0

各ファイルから同じセルの CSV ファイルを作成しようとしているだけだと仮定します。したがって、4 つのファイルがある場合、出力ファイルには 4 つのエントリが含まれます。

files = ['1_IQ_QTA.csv','2_IQ_QTA.csv','3_IQ_QTA.csv','4_IQ_QTA.csv']
n = 0
row = 0
outputfile = open('outputList.csv', 'w')
cellrow = 12 #collect the cell (12, 1) from each file and put it in the output list
cellcolumn = 1
while n<len(files):
    fname = files[n]
    currentfile = open(fname,'r')
    for i in range (cellrow):
        currentrow = currentfile.readline()
#        print currentrow #for testing
    columncnt=0
    currentcell = ''
    openquote = False
    for char in currentrow:
        if char == '"' and not openquote:
            openquote = True
        elif char == '"' and openquote:
            openquote = False
        elif char == ',' and not openquote:
            columncnt+=1
            if columncnt == cellcolumn:
                cellvalue = currentcell
#                print cellvalue #for testing
            currentcell=''
        else:
            currentcell += char

    outputfile.write (cellvalue + ',')
    currentfile.close()
    n += 1

outputfile.close()

既に CSV を持っているので、通常のファイルとして処理し、解析して正しい情報を見つける方が簡単で、インポートする必要がないように思えました。ハッピーコーディング!

于 2013-10-10T11:25:01.243 に答える