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ファイルに保存することができました。
コメント