【Python】csvモジュールの使い方!CSVの読み込み・書き込みを初心者向けに解説

readerとDictReaderの使い分けと文字化け対策

※このサイトの記事内では広告を掲載している場合があります。

ExcelやアプリからエクスポートしたCSVファイルをPythonで処理したい、という場面は仕事でも学習でもよくあります。標準ライブラリの csv モジュールを使えば、追加インストール不要で読み書きができます。

この記事では、csv モジュールの基本、reader と DictReader の違い、書き込み、文字化けを避けるコツまでを、実行結果つきで初心者向けに解説します。

CSVとは?

CSVは「カンマ区切りのテキストファイル」です。以下のような内容を sample.csv として保存したものとして、この記事の例を進めます。

name,age,city
田中,28,東京
佐藤,34,大阪
鈴木,22,名古屋

csv.reader で読み込む

import csv

with open("sample.csv", encoding="utf-8", newline="") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['name', 'age', 'city']
# ['田中', '28', '東京']
# ['佐藤', '34', '大阪']
# ['鈴木', '22', '名古屋']

1行ごとにリストとして取り出せます。ここで注意したいのは、age も文字列として読み込まれる点です。数値として計算したいときは型変換(int・str・float)が必要になります。ファイルを安全に開くための with についてはwith構文の記事を参考にしてください。

csv.DictReader で列名を使って読む

import csv

with open("sample.csv", encoding="utf-8", newline="") as f:
    for row in csv.DictReader(f):
        print(row["name"], int(row["age"]), row["city"])
# 田中 28 東京
# 佐藤 34 大阪
# 鈴木 22 名古屋

DictReader は、1行目をヘッダーとして、各行を辞書で返します。列の順番が変わっても壊れにくいので、実務ではこちらがよく使われます。辞書の基本はPythonの辞書(dict)の使い方で確認できます。

データ処理を仕事にしたい方は、独学の先も見据えておくと選択肢が広がります。プログラミングスクールの選び方と比較軸もあわせて確認してみてください。

csv.writer で書き込む

import csv

rows = [
    ["name", "age", "city"],
    ["高橋", 41, "福岡"],
    ["伊藤", 29, "札幌"],
]

with open("out.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(rows)

newline=”” を指定するのは、Windowsで空行が入ってしまうのを防ぐためのお約束です。辞書で書きたいときは csv.DictWriter を使います。

import csv

with open("out2.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.DictWriter(f, fieldnames=["name", "age"])
    writer.writeheader()
    writer.writerow({"name": "高橋", "age": 41})
    writer.writerow({"name": "伊藤", "age": 29})

文字化けしたときの対処

  • Excelで保存したCSVは Shift_JIS(cp932)のことが多く、encoding=”cp932″ を指定する
  • Excelで開く前提で出力するなら encoding=”utf-8-sig”(BOM付きUTF-8)にする
  • どの文字コードか分からないときは、まずテキストエディタで開いて確認する

もっと効率的にPythonを学びたい人へ

CSVの集計や加工は、業務効率化の入り口としてとても実用的です。「自分の仕事で使える形にしたい」という方は、マンツーマンで相談できるスクールを使うと近道になります。

Winスクールの「Python Winner」は、マンツーマン指導で未経験からPythonを学べ、転職サポートや無料カウンセリングにも対応しています。まずは無料カウンセリングで、自分に合うか確かめてみてはいかがでしょうか。

※本記事には広告(アフィリエイトリンク)を含みます。

Pythonプログラミング|マンツーマンレッスンで初めてをプロに育てる【Python Winner】

他のスクールとも比べたい方は、スクールの比較記事もあわせてご覧ください。資格取得を目指す方はPython3エンジニア認定基礎試験の参考書比較も参考になります。

まとめ

  • csv モジュールは標準ライブラリなので追加インストール不要
  • reader はリスト、DictReader は辞書で行を読める
  • 読み込んだ値は文字列なので、計算には型変換が必要
  • 書き込みは writer / DictWriter。open には newline=”” を付ける
  • 文字化けは encoding(cp932、utf-8-sig)で対処する

まずは小さなCSVを作って、DictReader で読み込むところから試してみましょう。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA