Pythonで表データを扱うライブラリ「tablib」を試す
仕事してるとテストデータを作ったり、またはシステムのデータをダウンロードさせたりとかで、結構csvやxls形式を使います
そんなときに便利そうなライブラリがあったのでちょっと試して見ました
tablib
https://github.com/kennethreitz/tablib
document
http://docs.python-tablib.org/en/latest/index.html
インストール
pip install tablib
使い方
新しくデータを作成する
# ヘッダ import tablib headers = ('名字', '名前') # データ data = [('東方','仗助'), ('虹村', '億泰')] # 表データの作成 data = tablib.Dataset(*data, headers=headers) # 行を追加 data.append(('広瀬', '康一')) # 列が足りないとtablib.core.InvalidDimensionsが発生 # data.append(('空条')) # 列を追加 data.append_col((16, 16, 16), header='年齢') # 行数が足りないとtablib.core.InvalidDimensionsが発生 # data.append_col((16, 16), header='年齢') # ヘッダを指定しないと、tablib.core.HeadersNeededが発生 # data.append_col((16, 16, 16)) # 行を取得 print data[0] # => ('\xe6\x9d\xb1\xe6\x96\xb9', '\xe4\xbb\x97\xe5\x8a\xa9', 16) # 列を取得 print data['名字'] # => ['\xe6\x9d\xb1\xe6\x96\xb9', '\xe8\x99\xb9\xe6\x9d\x91', '\xe5\xba\x83\xe7\x80\xac'] # 行を削除 del data[0]
データを出力する
# json print data.json [{"\u540d\u5b57": "\u6771\u65b9", "\u540d\u524d": "\u4ed7\u52a9", "\u5e74\u9f62": 16}, {"\u540d\u5b57": "\u8679\u6751", "\u540d\u524d": "\u5104\u6cf0", "\u5e74\u9f62": 16}, {"\u540d\u5b57": "\u5e83\u702c", "\u540d\u524d": "\u5eb7\u4e00", "\u5e74\u9f62": 16}] # yaml print data.yaml - {!!python/str "\u540D\u524D": !!python/str "\u4ED7\u52A9", !!python/str "\u540D\u5B57": !!python/str "\u6771\u65B9", !!python/str "\u5E74\u9F62": 16} - {!!python/str "\u540D\u524D": !!python/str "\u5104\u6CF0", !!python/str "\u540D\u5B57": !!python/str "\u8679\u6751", !!python/str "\u5E74\u9F62": 16} - {!!python/str "\u540D\u524D": !!python/str "\u5EB7\u4E00", !!python/str "\u540D\u5B57": !!python/str "\u5E83\u702C", !!python/str "\u5E74\u9F62": 16} # csv print data.csv 名字,名前,年齢 東方,仗助,16 虹村,億泰,16 広瀬,康一,16 # html print data.html <table> <thead> <tr><th>名字</th> <th>名前</th> <th>年齢</th></tr> </thead> <tr><td>東方</td> <td>仗助</td> <td>16</td></tr> <tr><td>虹村</td> <td>億泰</td> <td>16</td></tr> <tr><td>広瀬</td> <td>康一</td> <td>16</td></tr> </table> # excel open('data.xls', 'wb').write(data.xls)