Python で CSV に辞書を書き込む

Rayven Esplanada 2021年1月23日
Python で CSV に辞書を書き込む

このチュートリアルでは、Python で辞書変数を csv ファイルに書き込む方法を紹介します。

Python で辞書を CSV ファイルに書き込むには csv モジュールを使用する

Python モジュール csv は csv ファイルを操作するためのツールや関数を含んでいます。辞書を csv ファイルに書き込むための簡単なメソッドが 2つあります。それは writer()DictWriter() です。

これら 2つのメソッドは似たような関数を持ちますが、唯一の違いは DictWriter() がより多くの関数を含むラッパクラスであることです。

ここでは、いくつかのキーと値のペアを持つ単一の辞書を用いて、初期の例を設定してみましょう。

dct = {"Name": "John", "Age": "23", "Country": "USA"}

最初の例では、writer() を用いて新しい csv ファイルにアクセスして辞書を挿入します。

import csv

dct = {"Name": "John", "Age": "23", "Country": "USA"}

with open("dct.csv", "w") as f:
    writer = csv.writer(f)
    for k, v in dct.items():
        writer.writerow([k, v])

ファイルアクセス型は w なので、csv ファイル dct.csv の内容は新しい変更によって上書きされます。ファイルが存在しない場合は、同じディレクトリに自動的に作成されます。

csv ファイルの内容が出力されます。

CSV ファイル

辞書エントリは 1つだけなので、csv ファイルのレイアウトでは、1 列目にすべてのキーが含まれ、2 列目に値が含まれます。

辞書の配列を使用する例

1つの辞書の例でした。1つの csv ファイルに複数の辞書を挿入したい場合はどうでしょうか。

この例では、関数 DictWriter() を用いて csv ファイルに書き込む。同じキーを持つ値が複数存在するため、最初の例の CSV レイアウトも変更する必要があります。

最初の行にはキーラベルを格納し、それに続く行には各辞書項目の値を格納します。

まず、同じキー値を持つ辞書の配列を宣言します。

dct_arr = [
    {"Name": "John", "Age": "23", "Country": "USA"},
    {"Name": "Jose", "Age": "44", "Country": "Spain"},
    {"Name": "Anne", "Age": "29", "Country": "UK"},
    {"Name": "Lee", "Age": "35", "Country": "Japan"},
]

この辞書の配列を csv モジュールと DictWriter() を用いて csv ファイルに書き込む。

import csv

labels = ["Name", "Age", "Country"]
dct_arr = [
    {"Name": "John", "Age": "23", "Country": "USA"},
    {"Name": "Jose", "Age": "44", "Country": "Spain"},
    {"Name": "Anne", "Age": "29", "Country": "UK"},
    {"Name": "Lee", "Age": "35", "Country": "Japan"},
]

try:
    with open("csv_dct.csv", "w") as f:
        writer = csv.DictWriter(f, fieldnames=labels)
        writer.writeheader()
        for elem in dct_arr:
            writer.writerow(elem)
except IOError:
    print("I/O error")

DictWriter() のパラメータ fieldnames には変数 labels が代入されます。

また、ファイルを操作するコードを例外処理(try ... except)でラップする練習をするのも良いでしょう。これは、ファイルの書き込み処理に関連して外部エラーや非互換性が発生した場合に備えてのことです。

出力:

CSV ファイルの配列

要約すると、csv モジュールには辞書を csv ファイルに書き込むために必要なすべての関数とツールが含まれています。関数 writer()DictWriter() を使えば簡単に実現できます。

また、何かを壊す前に IO エラーを確実にキャッチするために、ファイルを操作するブロックを例外処理でラップすることに注意すると良いでしょう。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python CSV

関連記事 - Python Dictionary