ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

課題への挑戦

初めてのPythonが本棚の肥やしと化している…でもパソコン部屋が寒すぎて、遊んでたら間違いなく風邪を引く。
こたつでMac サイコー


コード

#!/usr/bin/python
import csv

master = csv.reader(file('master.csv', 'r'))
code = csv.reader(file('code.csv', 'r'))

for m in master:
    for c in code:
        if m[0] == c[0]:
            print ','.join(m), ',', ','.join(c)

Ruby の教訓はもちろん生かさない。
まぁ2重ループの練習ってことで。
実行してみる

$ ./convCsv.py 
123,aaa,bbb , 123,test2,test_test,test5
$

ぉおう?!最初の配列がループしないで終わった…

こうでした

コード

#!/usr/bin/python
import csv

for m in csv.reader(file('master.csv', 'r')):
    for c in csv.reader(file('code.csv', 'r')):
        if m[0] == c[0]:
            print ','.join(m), ',', ','.join(c)

実行結果

$ ./convCsv.py 
123,aaa,bbb , 123,test2,test_test,test5
456,iii,jjj , 456,test4,test_test,test3
789,kkk,mmm , 789,test6,test_test,test1
123,ccc,ddd , 123,test2,test_test,test5
123,eee,fff , 123,test2,test_test,test5
111,ggg,hhh , 111,test1,test_test,test6

無意識にファイルアクセスを減らそうとした結果がこれだよ。
どうも csv.reader() で読み出した配列って、1回ループするとクリアされてしまうのかな?
回避策はありそうだけどおいおい勉強する方針。
ruby とかpython はコードがスッキリかけて良いですね☆型とかぜんっぜんわかってないオイラには非常に敷居が高いですが…