Python バージョン 3.2 を使用しています。次のコードがあります。
for row2 in reader2:
for row1 in reader1:
if row1['identification_column'] == row2['identification_column']:
row2['updated_col'] = row1['updated_col']
writer.writerow(row2)
reader1 は、次のような csv.DictReader オブジェクトです。
identification_column,type
1, bike
2, guitar
3, drums
4, airplane
5, computer
reader2 は、より長く、より包括的なファイルを除いて、reader1 に似ています。
問題はこれです:
内側のループをすべて実行し、一致するものが見つからない場合、プログラムは行を書き込まず、思ったように外側のループをインクリメントします。止まるだけです。ここで誰かが「extrasaction = 'ignore'」をライター宣言ステートメントに追加することを提案した投稿を読むまで、最初はエラーが発生しました。しかし、それは私の問題を解決しませんでした。
このロジックを修正するためのフィードバックをいただければ幸いです。私の考えでは、次のことが起こっていました。
A) 内側のループが外側のループから問題の値を見つけられない場合、プログラムは外側のループの行を変更せずに出力します。
B) 内側のループに、外側のループが反復している正確な値がある場合、行のいずれかの列の値を変更してから、その行を出力します。
そのままでは、プログラムは内側のループの最初の繰り返しの後に停止するだけですが、なぜそうなのかわかりません。