環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

Python で csv ファイルを読み込む:ヘッダーのついた csv は DictReader が便利

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 で読むといいでしょう。

Python ファイル