Pythonの標準ライブラリであるcsv
モジュールは、CSV(Comma Separated Values)形式のファイルを読み書きするためのシンプルで強力な機能を提供します。この記事では、その基本的な使い方を解説します。
CSVファイルの読み込み
CSVファイルを読み込むには、まずファイルをopen()
し、そのファイルオブジェクトをcsv.reader()
に渡してReader
オブジェクトを作成します。ファイルを安全に扱うため、with
文を使用することが推奨されます。
sample_data.csv
の準備 以下の内容でsample_data.csv
ファイルを作成してください。
Timestamp,Event,UserID
2025-09-14 21:00,Login,user123
2025-09-14 21:02,Logout,user123
2025-09-14 21:05,Login,user456
データを読み出すコード Reader
オブジェクトはイテレータであり、for
ループで一行ずつ処理するのが効率的です。各行は、文字列のリストとして取得されます。
import csv
try:
with open('sample_data.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
# Readerオブジェクトをリストに変換して全データを取得することも可能
# all_data = list(reader)
# print(all_data)
# forループで一行ずつ処理する
for row in reader:
print(f"行番号: {reader.line_num}, 内容: {row}")
except FileNotFoundError:
print("エラー: sample_data.csv が見つかりません。")
実行結果:
行番号: 1, 内容: ['Timestamp', 'Event', 'UserID']
行番号: 2, 内容: ['2025-09-14 21:00', 'Login', 'user123']
行番号: 3, 内容: ['2025-09-14 21:02', 'Logout', 'user123']
行番号: 4, 内容: ['2025-09-14 21:05', 'Login', 'user456']
CSVファイルへの書き込み
CSVファイルにデータを書き込むには、csv.writer()
でWriter
オブジェクトを作成します。ファイルを書き込みモードで開く際には、newline=''
を指定することが重要です。これにより、WindowsなどのOSで不要な空行が挿入されるのを防ぎます。
writerow()
メソッドは、リストを引数として受け取り、CSVファイルに一行として書き込みます。
import csv
# 書き込むデータ(リストのリスト)
output_data = [
['Name', 'Department', 'ID'],
['Tanaka', 'Sales', 'S001'],
['Suzuki', 'Development', 'D002']
]
with open('output.csv', 'w', newline='', encoding='utf--8') as f:
writer = csv.writer(f)
# writer.writerows(output_data) # writerowsで一度に書き込むことも可能
for row_data in output_data:
writer.writerow(row_data)
print("output.csv にデータを書き込みました。")
delimiter
とlineterminator
引数
csv.writer()
を生成する際に、オプションのキーワード引数を指定することで、出力形式をカスタマイズできます。
delimiter
: フィールド(セル)間の区切り文字を指定します。デフォルトはカンマ,
です。タブ区切りのTSVファイルを作成する場合は\t
を指定します。 lineterminator
: 行末に使われる文字列を指定します。デフォルトは\r\n
です。
import csv
tsv_data = [
['Fruit', 'Price'],
['Apple', 150],
['Banana', 120]
]
with open('output.tsv', 'w', newline='', encoding='utf-8') as f:
# 区切り文字にタブ、行末に改行2つを指定
writer = csv.writer(f, delimiter='\t', lineterminator='\n\n')
writer.writerows(tsv_data)
print("output.tsv を作成しました。")
このコードは、タブで区切られ、各行の間に空行が入ったTSVファイルを生成します。
まとめ
Pythonのcsv
モジュールは、CSVデータの読み書きを簡単に行うためのReader
とWriter
オブジェクトを提供します。ファイル操作にはwith
文を使い、書き込み時にはnewline=''
を指定するのが現代的な作法です。delimiter
などの引数を使えば、TSVのようなCSV以外の区切り文字形式のファイルも柔軟に扱うことができます。