CSVを読み込んでPythonの辞書に格納する方法

公開日:  

python csv


CSVといえば何かとよく使う形式です。時系列データとか、パラメーターにも使えますよね。
そこで今回は、CSVファイルを読み込んで、Pythonの辞書に格納する方法です。

環境

  • Windows 10
  • Python 3.6.2

CSVファイルを用意

サンプルとして読み込むCSVファイルは以下になります。
1行目がヘッダー行です。それ以降に内容が続きます。

title,version,price,stock
Sony Xperia 1 Dual-SIM J9110,"128GB, Purple",86895,4
Sony Xperia 10 Plus Dual I4293,"64GB, Navy",33405,1
Huawei P30 Pro Dual-SIM VOG-L29,"8GB/256GB, Breathing Crystal",87570,7
Sony Xperia 10 Dual I4193,"64GB, Navy",28015,0
Apple iPhone SE A1723,"128GB, Gold",33675,14
ASUS ZenFone 6 Dual-SIM ZS630KL,"6GB/64GB, Midnight Black",0,0

Excelでも扱えるように文字コードはBOM付きUTF-8にします。

Excelで開いた場合

Excelで開いた場合

CSVを読み込むプログラム

以下がCSVを読み込むコードです。

import csv
import json


with open('products.csv', newline='', encoding='utf_8_sig') as f:
    reader = csv.DictReader(f)
    data = [row for row in reader]

# テキトーに表示してるだけです
print(data[0]['title'])
print(data[0]['version'])
print(data[2]['price'])
print(data[3]['stock'])
  • CSVファイルをBOM付きUTF-8で保存したので、open関数にencoding='utf_8_sig'を指定します。
  • csv.DictReaderはCSVのヘッダーの値をキーにして、一行ずつ辞書にして読み込んでくれます。今回のケースではtitle,version,price,stockがキーになります。
  • 最後に読み込んだデータをリストに格納しています。

実行すると以下が出力されます。

Sony Xperia 1 Dual-SIM J9110
128GB, Purple
87570
0


関連記事