1

ある csv ファイルから別の csv ファイルに複数の列をコピーしようとしています。列は、コマンド ライン引数を介して送信される引数によって指定されます。コードで静的に設定された列をコピーするようにコードを動作させていますが、どの列をコピーするかは動的に決定する必要があります。つまり、ユーザーはコマンドラインから必要な列を指定でき、それらの列のみがコピーされるということです。現在のコードは以下のとおりです。csv ファイルの最初の 2 列をコピーします。cmdargs を何らかの方法で反復処理し、リスト cmdargs で指定された行をコピーする必要があります。何か案は?

import sys
import csv
import os

#Get rid of first argument (filename)
cmdargs = sys.argv[1:]

#Convert values to integers
cmdargs = list(map(int, cmdargs))   

with open(r'data.csv','rb') as source:
    rdr= csv.reader( source )
    with open('output.csv',"wb") as result:
        wtr= csv.writer( result )
        for row in rdr:
        wtr.writerow( ([row[0]], [row[1]]))
4

1 に答える 1

2

このような何かがうまくいくはずです:

for row in rdr:

outlist=[]
for index in  cmdargs:
  outlist.append(row[index])
wtr.writerow(outlist)

または短いバージョンを好む場合:

wtr.writerow([row[i] for i in cmdargs])
于 2013-10-17T17:17:09.303 に答える