pythonでcsvファイルを読み書きする方法
目次
初心者が最初につまずきやすいポイントのひとつが「ファイル操作」。その中でも、CSV は扱う機会が多い形式だ。ここでは、Python 標準ライブラリだけを使って、CSV を読み込んだり書き込んだりする基本的なコードをわかりやすく紹介する。
CSV とは何か
CSV は「Comma Separated Values」の略で、カンマで区切られたテキストデータのこと。Excel やスプレッドシートとも相性が良く、プログラムでも扱いやすい。
CSV を読み込む
Python には標準で csv モジュールが用意されている。まずは CSV の内容を行ごとに読み込む基本例から。
import csv
with open("input.csv", encoding="utf-8", newline="") as f:
reader = csv.reader(f)
for row in reader:
print(row)
ポイント
openでファイルを開き、csv.readerに渡すだけでよい。rowはリストとして取得される。newline=""を付けないと改行が二重になる場合があるので注意。
CSV に書き込む(上書き)
次に、CSV ファイルにデータを書き込む。
import csv
data = [
["name", "age", "city"],
["Taro", "20", "Tokyo"],
["Hanako", "25", "Osaka"]
]
with open("output.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerows(data)
ポイント
"w"モードは上書き保存。writerowsは複数行をまとめて書き込みたいときに使う。
CSV に追記する
既存のファイルに行を追加したい場合は "a" モードを使う。
import csv
with open("output.csv", "a", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerow(["Jiro", "30", "Nagoya"])
辞書形式で読み書きする方法
列名を意識して扱いたい場合には、DictReader と DictWriter が便利。
簡単な例を紹介する。
読み込み
import csv
with open("input.csv", encoding="utf-8", newline="") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["name"], row["age"])
書き込み
import csv
fieldnames = ["name", "age", "city"]
rows = [
{"name": "Taro", "age": "20", "city": "Tokyo"},
{"name": "Hanako", "age": "25", "city": "Osaka"}
]
with open("dict_output.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(rows)
まとめ
csvモジュールを使えば、CSV の読み書きは数行でできる。- データをリストで扱うか、辞書で扱うかは用途で使い分ける。
newline=""の指定を忘れないこと。
この基本を押さえておけば、データ処理の第一歩として十分。