この記事では、Pythonの`csv.DictWriter`クラスを使用してヘッダー付きのCSVファイルを作成する方法について解説します。具体的なコード例とその解説、さらに応用例を2つ含めています。
目次
csv.DictWriterとは
`csv.DictWriter`はPythonの標準ライブラリである`csv`モジュール内に存在するクラスです。このクラスを使用することで、各行がディクショナリとして表されるCSVファイルを簡単に作成することができます。特に、ヘッダー情報を維持しながらデータを操作したい場合に非常に便利です。
基本的な使い方
`csv.DictWriter`を使う際に必要なステップは主に以下の3つです。
1. CSVファイルを開く(または新規作成する)
2. `csv.DictWriter`オブジェクトを作成する
3. ディクショナリ形式でデータを書き込む
基本的なコード例
# csv モジュールをインポート
import csv
# ファイルを開く(新規作成も含む)
with open('sample.csv', 'w', newline='') as file:
# ヘッダー情報
fieldnames = ['Name', 'Age', 'Occupation']
# csv.DictWriterオブジェクトを作成
writer = csv.DictWriter(file, fieldnames=fieldnames)
# ヘッダーを書き込む
writer.writeheader()
# データを書き込む
writer.writerow({'Name': 'John', 'Age': 28, 'Occupation': 'Engineer'})
writer.writerow({'Name': 'Jane', 'Age': 32, 'Occupation': 'Doctor'})
この例では、ヘッダーが`Name`、`Age`、`Occupation`であり、それぞれのデータがディクショナリ形式で書き込まれています。
応用例1: 条件に応じたデータの書き込み
ある条件に合致するデータのみをCSVファイルに書き込む場合も簡単に実装できます。
コード例
# csv モジュールをインポート
import csv
# ファイルを開く(新規作成も含む)
with open('filtered_sample.csv', 'w', newline='') as file:
fieldnames = ['Name', 'Age', 'Occupation']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
# データリスト
people = [
{'Name': 'John', 'Age': 28, 'Occupation': 'Engineer'},
{'Name': 'Jane', 'Age': 32, 'Occupation': 'Doctor'},
{'Name': 'Bob', 'Age': 22, 'Occupation': 'Student'}
]
# Ageが25以上のデータだけを書き込む
for person in people:
if person['Age'] >= 25:
writer.writerow(person)
応用例2: 既存のCSVファイルにデータを追加
`csv.DictWriter`を使用して、既存のCSVファイルに新たな行を追加することも可能です。
コード例
# csv モジュールをインポート
import csv
# ファイルを開く(追記モード)
with open('sample.csv', 'a', newline='') as file:
fieldnames = ['Name', 'Age', 'Occupation']
writer = csv.DictWriter(file, fieldnames=fieldnames)
# 新たなデータを書き込む
writer.writerow({'Name': 'Emily', 'Age': 24, 'Occupation': 'Artist'})
この例では、既存の`sample.csv`ファイルに新たな行が追加されます。
まとめ
`csv.DictWriter`は、ヘッダー付きのCSVファイルを簡単に作成するための強力なツールです。基本的な使い方から、条件に基づいたデータのフィルタリング、既存のCSVファイルへのデータ追加など、多くの応用例でその有用性が発揮されます。
コメント