下記のようなdata1.csv,data2.csvのようなcsvファイルがあるとき、data3.csvのようにdata1.csvとdata2.csvのnameが一致する行にdata1.csvのsを追加で書き込むようなプログラムを作りたいです。
csv
1###data1.csv### 2name,s 3a1,5 4a2,6 5a3,1 6a4,3 7a5,7 8a6,1
csv
1###data2.csv### 2num,name,d1,d2,d3 31,a1,4,6,2 42,a2,9,7,3 53,a3,3,3,4 64,a4,5,2,3 71,a1,6,6,2 82,a2,3,8,3 95,a5,3,6,4 106,a6,9,5,3
csv
1###data3.csv### 2num,name,d1,d2,d3,s 31,a1,4,6,2,5 42,a2,9,7,3,6 53,a3,3,3,4,1 64,a4,5,2,3,3 71,a1,6,6,2,5 82,a2,3,8,3,6 95,a5,3,6,4,7 106,a6,9,5,3,1
python
1# csvファイルを扱うための関数を読み込む 2import csv 3import glob 4import os 5import shutil 6 7 8 9# read_fpをdata.csvの読み込みポインタとして定義 10read_fp1=csv.reader(open("data1.csv", "r")) 11read_fp2=csv.reader(open("data2.csv", "r")) 12 13with open('data3.csv', 'w') as f: 14 writer = csv.writer(f) 15 16 17for line2 in read_fp2: 18 num = line2[0] 19 name1 = line2[1] 20 d1 = line2[2] 21 d2 = line2[3] 22 d3 = line2[4] 23 for line in read_fp1: 24 name2 = line[0] 25 s = line[1] 26 if name1==name2: 27 with open('data3.csv', 'a') as f: 28 writer = csv.writer(f) 29 writer.writerow(['num','name','d1','d2','d3','s']) 30 f.close()
for文でnameが一致する行を書き込もうとしましたが、うまく動かずできなかったため、ご教授お願いいたします。
回答2件
あなたの回答
tips
プレビュー