csv.DictReader
をfor
するときは一度辞書で受ける
csv.DictReader
をそのままfor
すると見出しだけ列挙されます。これは一度辞書として受けることで解決できます。原因はcsv.DictReader
のiter
結果がdict
であること、dict
のfor
がキーを返すことです。csv.DictReader
ではキーが見出しに対応します。アンパックしたくなりますが、dict
の場合は遠回りが近道です。
dictのキーだけ列挙されるコード
dd = ({"A":1, "B":2, "C":3},
{"A":4, "B":5, "C":6})
for a, b, c in dd:
print((a, b, c))
#('A', 'B', 'C')
#('A', 'B', 'C')
dictを取得できるコード
dd = ({"A":1, "B":2, "C":3},
{"A":4, "B":5, "C":6})
for d in dd:
print(d)
#{'A': 1, 'B': 2, 'C': 3}
#{'A': 4, 'B': 5, 'C': 6}
csv.DictReaderの見出しが列挙されるコード
import csv
csv_raw = "A, B, C\n1,2,3\n4,5,6".split("\n")
for a, b, c in csv.DictReader(csv_raw):
print((a, b, c))
#('A', ' B', ' C')
#('A', ' B', ' C')
csv.DictReaderの行(dict)を取得できるコード
import csv
csv_raw = "A, B, C\n1,2,3\n4,5,6".split("\n")
for d in csv.DictReader(csv_raw):
print(d)
#{'A': '1', ' B': '2', ' C': '3'}
#{'A': '4', ' B': '5', ' C': '6'}