PythonのcsvモジュールのDictReaderを使ってみます。
DictReaderのドキュメントは こちら です。
DictReaderは、CSVの行の情報を辞書型にするオブジェクトです。
DictReaderの基本的な使い方
サンプルで使用するCSVファイルを用意する
サンプルコードで使用する入力CSVファイルは、以下の記事のDictWriterで出力したtest_b.csvを使用します。
PythonのcsvモジュールでDictWriterを使いたいDictReader使用方法のサンプルコード
サンプルコードです。
import os import csv import json filename = 'test_b.csv' file_path = os.path.join(os.getcwd(), filename) csv_data = {} f = open(file_path, 'r') reader = csv.DictReader(f) headers = reader.fieldnames # CSVのヘッダ情報を取得する。 for row in reader: inner_data = {} for header in headers: inner_data.update({header: row[header]}) num = reader.line_num csv_data.update({num: inner_data}) f.close() print(json.dumps(csv_data, indent=4))
サンプルコードの補足説明
CSVのヘッダ情報はfieldnamesで取得できます。
headers = reader.fieldnames >> ['Name', 'Country', 'Job', 'Age']
readerをFor文で回すと列情報が取得できるので、辞書型に落とし込みます。
for row in reader: inner_data = {} for header in headers: inner_data.update({header: row[header]})
row情報はこのようになっています。
OrderedDict([('Name', 'Ken'), ('Country', 'US'), ('Job', 'Artist'), ('Age', '56')])
最後に、辞書型の第1階層のKEYは、CSVファイルの行番号とします。
num = reader.line_num csv_data.update({num: inner_data})
DictReaderで読み込んだ結果
辞書型を表示してみます。
DictReaderを使ってCSVファイルを読み込めています。
{ "2": { "Name": "Ken", "Country": "US", "Job": "Artist", "Age": "56" }, "3": { "Name": "Alan", "Country": "Japan", "Job": "Carpenter", "Age": "27" }, "4": { "Name": "Steven", "Country": "China", "Job": "Artist", "Age": "40" } }