Pythonで辞書をCSVファイルに保存する

Pythonで辞書をCSVファイルに保存してみます。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■辞書を作成する

辞書をCSVファイルに保存する前に、辞書を作成します。

■コード

field_name = ['No','名前','出身']

data =[
    {'No':1,'名前':'小林','出身':'大阪'},
    {'No':2,'名前':'山田','出身':'京都'},
    {'No':3,'名前':'岡田','出身':'滋賀'},
    {'No':4,'名前':'山本','出身':'奈良'},
    {'No':5,'名前':'松本','出身':'兵庫'},
]

print(field_name)
print(data)

今回はfield_nameという名前の辞書を作成し、その中にフィールド名の値を追加します。

追加後、dataという名前の辞書を作成し、その中にキーと値を追加します。

■実行

作成した辞書をprint関数で出力すると、辞書の中にキーと値が格納されていることが確認できました。

■辞書をCSVファイルに保存する

辞書が作成できましたので、辞書をCSVファイルに保存するスクリプトを書いていきます。

■コード

import csv

field_name = ['No','名前','出身']

data =[
    {'No':1,'名前':'小林','出身':'大阪'},
    {'No':2,'名前':'山田','出身':'京都'},
    {'No':3,'名前':'岡田','出身':'滋賀'},
    {'No':4,'名前':'山本','出身':'奈良'},
    {'No':5,'名前':'松本','出身':'兵庫'},
]

with open(r'C:\Users\user\test\dic_test.csv','w',encoding='utf-8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames = field_name)
    writer.writeheader()
    writer.writerows(data)

今回用意した辞書に対して、with構文を使い、ファイルの書き込みを行います。open()の括弧内には、第1の引数にCSVファイル名、保存する場所を指定します。第2の引数には、「w」と記述し、書き込みモードにします。第3の引数は、UnicodeEncodeErrorというエラーが発生し、文字化けしないように、エンコードを「utf-8」に設定します。

次にwriterという変数を作成し、csv.DictWriter()で、今回用意した辞書を、CSVファイルに書き込みします。括弧内では、第1の引数に、空のCSVファイルを指定し、第2の引数で、「fieldnames =」と記述し、フィールド名の設定を行います。

その後、writer.writeheader()で、ヘッダーを出力します。出力後、writer.writerows()で括弧内に、今回作成した辞書(data)を指定し、空のCSVファイルに書き込みを行います。

■実行

このスクリプトを「dic_csv_2.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、指定した保存場所にCSVファイルが保存されていることを確認しました。確認後、CSVファイルの中身を確認しましたが、今回作成した辞書の情報が書き込まれていました。

■作成した辞書を書き込む際に各行に空行を入れないで作成する

今回、辞書をCSVファイルに保存することができましたが、CSVファイルを確認すると、辞書の各行に空行が発生してしまっています。これを改善し各行に空行を入れないで作成してみます。

■コード

import csv

field_name = ['No','名前','出身']

data =[
    {'No':1,'名前':'小林','出身':'大阪'},
    {'No':2,'名前':'山田','出身':'京都'},
    {'No':3,'名前':'岡田','出身':'滋賀'},
    {'No':4,'名前':'山本','出身':'奈良'},
    {'No':5,'名前':'松本','出身':'兵庫'},
]

with open(r'C:\Users\user\test\dic_test2.csv','w',encoding='utf-8',newline='') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames = field_name)
    writer.writeheader()
    writer.writerows(data)

空行を入れないで作成する場合は、with構文を使い、ファイルの書き込みを行う際に、open()と記述しますが、括弧内に「newline=”」と追加します。これで空行を入れないで作成することができます。

■実行

先ほどのスクリプトを変更し、コマンドプロンプトから実行してみます。

実行してみると、各行に空行を入れないで辞書をCSVファイルに保存することができました。

コメント

タイトルとURLをコピーしました