Python で csv ファイルを読み込む:ヘッダーのついた csv は DictReader が便利
2022.11.24
Python の csv ライブラリを使うと csv ファイルを読みこむことができます。今回は下の csv ファイルを読みこみます。Alice と Bob の名前、身長、体重です。
test.csv
"Name","Height","Weight"
"Alice","170","54"
"Bob","186","79"
csv を読みこむコード
import csv
with open('test.csv', 'r') as f:
reader = csv.reader(f)
for r in reader:
print(r)
# ['Name', 'Height', 'Weight']
# ['Alice', '170', '54']
# ['Bob', '186', '79']
まず with でファイルを r モードで開きます。open の第二引数に r を入れましょう。
csv.reader でファイルを読み、結果を reader に入れます。reader にある各要素を for で出力したものが
['Name', 'Height', 'Weight']
です。csv.reader はファイルの中身をリストで抽出するときに使います。
DictReader を使って csv ファイルを読みこむ
import csv
with open('test.csv', 'r') as f:
reader = csv.DictReader(f)
for r in reader:
print(r)
# OrderedDict([('Name', 'Alice'), ('Height', '170'), ('Weight', '54')])
# OrderedDict([('Name', 'Bob'), ('Height', '186'), ('Weight', '79')])
読みこみは reader の他に DictReader があります。出力を見てわかるように、各行が「ヘッダーをキーとする辞書(のようなもの)」になっています。Python プログラムにとって辞書は最も扱いやすいオブジェクトの一つです。各行をキーごとに出力することができます。
import csv
with open('test.csv', 'r') as f:
reader = csv.DictReader(f)
for r in reader:
print(r['Name'])
print(r['Height'])
print(r['Weight'])
# Alice
# 170
# 54
# Bob
# 186
# 79
ヘッダーのついた csv ファイルは DictReader で読むといいでしょう。