PythonでCSVファイルを扱う方法を学んだので、記録としてまとめておきます。
この回では、csv.reader()
と csv.writer()
を使って、CSVファイルを行単位で読み書きする基本を確認しています。
csvモジュールを使う準備
Pythonでは標準ライブラリの csv
モジュールを使ってCSVファイルを扱うことができます。
import csv
追加のインストールなどは必要ありません。
CSVファイルの読み込み(csv.reader)
まず、次のようなCSVファイルを用意しておきます。
# sample.csv の内容
name,age,city
Alice,30,New York
Bob,25,Los Angeles
このファイルを読み込むコードは次のとおりです。
import csv
with open("sample.csv", newline="") as f:
reader = csv.reader(f)
for row in reader:
print(row)
['name', 'age', 'city']
['Alice', '30', 'New York']
['Bob', '25', 'Los Angeles']
各行がリストとして出力されることがわかります。
CSVファイルへの書き込み(csv.writer)
リストを使ってCSVファイルにデータを書き出す方法です。
import csv
rows = [
["name", "age", "city"],
["Alice", 30, "New York"],
["Bob", 25, "Los Angeles"]
]
with open("output.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(rows)
# 出力される output.csv の内容
name,age,city
Alice,30,New York
Bob,25,Los Angeles
writerows()
を使うと、リストのリスト(2次元配列のようなもの)をまとめて書き込むことができます。
注意点まとめ
よくあること | 対応策 |
---|---|
改行が2行ずつになる |
newline="" をファイルを開くときに指定する |
日本語が文字化けする |
encoding="utf-8" をファイルを開くときに指定する |
数値が文字列になる | CSVはすべて文字列として扱われるので、自分で変換が必要 |
ファイルを開くときの指定方法(例)
# 改行対策と文字化け対策を両方指定する場合
with open("sample.csv", newline="", encoding="utf-8") as f:
reader = csv.reader(f)
どちらも open()
関数の引数に渡します。
まとめ
-
csv.reader()
を使うとCSVをリスト形式で読み込める -
csv.writer()
を使ってリストをCSVに書き出せる -
newline=""
やencoding="utf-8"
の指定がトラブル回避に重要