CSVファイルからクラスを作る方法
例えば、こんなCSVから、ヘッダ部分の属性を持つ、データクラスを作りたいとします。
name,hp,mp,str,vit,agi,dex,int,men hoge,100,15,10,9,4,6,4,6 piyo,80,0,9,6,4,7,6,4 momo,90,50,8,8,3,3,10,12
#!/usr/bin/env python # -*- coding: utf-8 -*- import csv class Chara: def __init__(self, dict): for key, value in dict.items(): if value.isdigit(): value = int(value) setattr(self, key, value) def __str__(self): return "Name:%s, Hp:%d, Mp:%d, Str:%d, Vit:%d, Agi:%d, Dex:%d, Int:%d, Men:%d"%( self.name, self.hp, self.mp, self.str, self.vit, self.agi, self.dex, self.int, self.men) def main(): f = file("test.csv") headers = f.readline().strip().split(",") dictReader = csv.DictReader(f, headers) for dict in dictReader: chara = Chara(dict) print chara if(__name__ == "__main__"): main()
実行結果です。
Name:hoge, Hp:100, Mp:15, Str:10, Vit:9, Agi:4, Dex:6, Int:4, Men:6
Name:piyo, Hp:80, Mp:0, Str:9, Vit:6, Agi:4, Dex:7, Int:6, Men:4
Name:momo, Hp:90, Mp:50, Str:8, Vit:8, Agi:3, Dex:3, Int:10, Men:12
値が文字列だけなら、コンストラクタで、
self.__dict__ = dict
してやるだけで、OKです。