
CSV(Comma-Separated Values)ファイルは、表形式のデータを保存する際によく利用される、シンプルながら非常に汎用性の高いファイル形式です。ビジネスの現場ではもちろん、データ分析やシステム連携など、様々な場面でその存在を見かけることでしょう。PythonでこのようなCSVファイルを扱う際、外部ライブラリを導入せずとも強力な機能を提供するのが、今回ご紹介する標準ライブラリ`csv`です。この記事では、`csv`ライブラリの基本的な使い方から、ファイル読み書きの具体的な手法まで、丁寧に解説していきます。
概要
Pythonのcsvライブラリは、名前の通りCSV形式のファイルを扱うための標準ライブラリです。標準ライブラリであるため、追加のインストール作業なしで、すぐに利用を開始できます。
このライブラリは、単にカンマで区切られたファイルだけでなく、タブ区切りやセミコロン区切りなど、様々な区切り文字(デリミタ)に対応しています。また、データ内に区切り文字や改行コードが含まれる場合の処理(引用符による囲みなど)も適切にハンドリングしてくれるため、複雑なCSVファイルでも安心して読み書きが可能です。
メリット
csvライブラリを利用するメリットは多岐にわたりますが、特に以下の点が挙げられます。
- 標準ライブラリであること: Pythonの実行環境があればどこでも利用可能で、環境構築の手間が不要です。互換性も高く、異なる環境での動作保証が容易になります。
- シンプルで直感的なAPI: ファイルの読み書きにおける基本的な操作は、数行のコードで実現できます。これにより、学習コストが低く、迅速な開発が可能です。
- 多様なフォーマットへの対応: カンマ以外の区切り文字や、引用符の扱いのカスタマイズなど、幅広いCSVフォーマットに対応できます。
- メモリ効率の良さ: ファイルを行単位で読み書きするため、巨大なCSVファイルを扱う際もメモリを大量に消費することなく効率的に処理できます。
サンプルコード
それでは、実際にcsvライブラリを使ったファイルの読み書きを見ていきましょう。
1. CSVファイルの書き込み
まずは、リストのデータをCSVファイルに書き込む例です。
import csv
# 書き込むデータ
data = [
['Name', 'Age', 'City'],
['Alice', 30, 'New York'],
['Bob', 24, 'London'],
['Charlie', 35, 'Paris']
]
# CSVファイルに書き込む
file_path = 'example.csv'
with open(file_path, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(data) # 複数の行を一度に書き込む場合はwriterows()
# writer.writerow(['David', 28, 'Tokyo']) # 1行ずつ書き込む場合はwriterow()
print(f"'{file_path}' にデータを書き込みました。")ファイルのオープン時に `newline=”` を指定するのを忘れないでくださいね。これを指定しないと、Windows環境などで余計な空行が挿入されてしまうことがあります。
2. CSVファイルの読み込み
次に、書き込んだCSVファイルを読み込む例です。基本的な読み込みと、辞書形式で読み込む方法の2パターンをご紹介します。
2.1. `csv.reader` を使った基本的な読み込み
csv.readerは、各行をリストとして読み込みます。
import csv
file_path = 'example.csv'
print(f"\n'{file_path}' の内容を読み込みます(csv.reader):")
with open(file_path, 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)2.2. `csv.DictReader` を使った辞書形式での読み込み
csv.DictReaderは、CSVファイルの1行目をヘッダーとして扱い、各行のデータを辞書形式(キーがヘッダー、値がその行のデータ)で読み込みます。これにより、列名を使ってデータにアクセスできるため、コードの可読性が大幅に向上します。
import csv
file_path = 'example.csv'
print(f"\n'{file_path}' の内容を読み込みます(csv.DictReader):")
with open(file_path, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(f"Name: {row['Name']}, Age: {row['Age']}, City: {row['City']}")`DictReader`を使うと、ヘッダーの名前でデータにアクセスできて便利ですよね!特にたくさんの列があるCSVファイルを扱うときに役立ちます。
みーちゃんのワンポイント
csvライブラリを扱う上で、最も重要なコツは、ファイルのオープンモードとnewline=''の指定です。特にCSVファイルを書き込む際、open()関数のnewline=''引数を忘れると、プラットフォームによっては余計な改行コードが挿入され、ファイルが期待通りに作成されないことがあります。また、読み書き時には適切なencodingを指定することで、文字化けのトラブルを未然に防ぎましょう。

