2017-08-11 8 views
-1

入力ファイルから列をコピーして、出力ファイルに配置しようとしています。例えば、私の入力ファイルでは、出力ファイルの行[15]に行[2]をコピーしたいとします。下のコードでは、入力の行[2]をコピーして出力の行[0]に貼り付けています。これはコードから意味があります。どのように行[18]のために働かせることができますか?CSVファイルに列をコピーする

for path in glob.glob("out.csv"): 
    if path == "out1.csv": continue 
    with open(path) as fh: 
    reader = csv.reader(fh) 
    for row in reader: 
     if row[8] == 'READ' and row[10] == '1110': 
      writer = csv.writer(out1, dug1) 
      writer.writerow([row[2]]) 
      writer.writerow(row 
+2

どのくらいのデータを探しているものを達成するために、配列スライス

writer.writerow(rows[row-1][:3] + ["my","data"] + rows[row-1][5:]) 

を使用する必要がありますあなたは一緒に働いていますか?行数/列数。サンプルを提供できますか?私が尋ねる理由は、両方のファイルをメモリに読み込み、必要な位置に必要な行を追加して、ファイル全体を書き直すことです。 – MattR

+0

長さ 'n'(nが15または18か、またはユースケースが何であれ)のリスト' row'を作成し、このリストの適切なインデックスに目的の値をコピーしてから、 'writer.writerow(row ) '? – Adam

答えて

0

私はあなたがあなたのCSVから読んだものに基づいて、固定行出力か動的行出力を探していると思います。あなたは一人ですべての行を読者から読んでいます。あなたは上記の後、巨大なCSVファイルがある場合は に

rows = list(csv.reader(fh)) 

reader = csv.reader(fh) 

を変更し、それがメモリにファイル全体を読み込むでしょうし、あなたはそれが起こることを望んでいないとして推奨されていません。

ここでは、csvのすべての行を持つ変数rowsがあります。特定の行にピークを当てたい場合は、rows[row-1][col-1]を使用してください。

特定の行をCSVに書き込む場合は、rows[row-1]を使用してからcsvに書き込むことができます。

writer.writerow(rows[row-1]) 

あなたはその行から特定の列をミックスしたい場合は、あなたが十分な例を持っていなければならない上、あなたが

関連する問題