👩‍🏫

#65 Pythonで辞書型のリストをCSVファイルに出力してみた

2024/09/25に公開

はじめに

今回は、Pythonのcsvモジュールを使用し、辞書型のリストのデータをCSVファイルとして出力させてみました。
CSVでのデータ出力はよく使われると思いますので、よかったら参考にしてみてください。

コード

# csvモジュールをインポート
import csv

# 辞書型のデータ
data = [
    {'Name': 'Aさん', 'Age': 25, 'City': '札幌'},
    {'Name': 'Bさん', 'Age': 30, 'City': '小樽'},
    {'Name': 'Cさん', 'Age': 35, 'City': '函館'}
]

# CSVファイルの作成先のパス(環境に合わせて好きなパスを指定してください)
csv_file_path = r'C:\Users\{ユーザー名}\Desktop\テスト用フォルダ\data.csv'

# CSVファイルを書き込みモードで開く
with open(csv_file_path, 'w') as csvfile:
    # ヘッダ(列の名前)行を定義
    fieldnames = ['Name', 'Age', 'City']

    # DictWriterオブジェクトを作成
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    # ヘッダ行を書き込む
    writer.writeheader()

    # 各行のデータを書き込む
    for row in data:
        writer.writerow(row)

コードの内容

csvモジュール

CSVファイルの読み書きを行うための機能を提供してくれます。
参照:https://docs.python.org/ja/3/library/csv.html
今回はcsvモジュールの DictWriter を使用します。

詳細

# 辞書型のデータ
data = [
    {'Name': 'Aさん', 'Age': 25, 'City': '札幌'},
    {'Name': 'Bさん', 'Age': 30, 'City': '小樽'},
    {'Name': 'Cさん', 'Age': 35, 'City': '函館'}
]

CSVに書き込みたいデータを辞書型のリストで定義します。
辞書型は {'キー名': '値'} の形で表記します。
各辞書は1行のデータを表し、'キー名'でヘッダ名を指定し'値'は列のデータとしてCSVに書き込まれます。
複数の辞書型のデータを扱うため、[]で囲いリスト化しています。

csv_file_path = r'C:\Users\{ユーザー名}\Desktop\テスト用フォルダ\data.csv'

CSVファイルの保存先のパスを定義します。
raw 文字列、rを使うと、バックスラッシュをエスケープ文字として解釈しないようになります。
参照:https://www.javadrive.jp/python/string/index4.html

with open(csv_file_path, 'w') as csvfile:

CSVファイルを書き込みモードwで開きます。
with 構文を使うことで、ブロック内の処理が終了したら自動的にファイルを閉じてくれます。

fieldnames = ['Name', 'Age', 'City']

CSVファイルのヘッダをリストで定義します。

writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

csv.DictWriter オブジェクトを作成し、CSVファイルへの書き込みを行う準備をします。
fieldnames パラメータで定義した順番でCSVファイルに書き込みを行います。

writer.writeheader()

CSVファイルの先頭にヘッダ行を書き込みます。

for row in data:

data リストから辞書を1つずつ取り出し、辞書の数だけループします。

writer.writerow(row)

取り出した辞書のデータをCSVファイルに書き込みます。

実行結果

指定したパスに data.csv という名前のCSVファイルが生成されます。
中身を開くとdata で定義した内容が表示されています!

最後に

今後もPythonの機能をいろいろ触っていけたらと思います。
ご覧いただきありがとうございました。

Discussion