2013/12/04

Python Tips:csvファイルを扱いたい

Pythonでcsvファイルを扱う方法をご紹介します。

csvを扱うには、名前もそのままの csv ライブラリが便利です。

csvを使うおおまかな流れは次のような形となります。
  1. ファイルオブジェクトを開く
  2. ファイルオブジェクトをcsv.reader()かcsv.writer()に渡す
  3. 生成されたcsvオブジェクトのメソッドを使う
  4. ファイルオブジェクトを閉じる

いちばんシンプルなcsvの読み込みは次のような感じになります。
import csv
with open(FILENAME, 'r') as f:
    c = csv.reader(f)
    for row in c:
        print row
この場合は各rowが配列として帰ってきます。デフォルトでは各要素は文字列なので、数値として扱いたいときには
    for row in c:
        num_row = map(float, row)  # 各要素をfloatに変換
        print num_row
などとするとよいかと思います。

先頭行がデータではなくカラム名になっているかどうかを調べたいときは、csv.Snifferクラスのhas_header()メソッドにファイルの中身を渡すこととある程度自動判定してくれます。
    hasHeader = csv.Sniffer().has_header(f.read(100))
    if hasHeader:  # header行があるかどうか True/False
        print "%s has a header" % FILE
        f.seek(0)  # 先頭に戻る

書き込みの方法や区切り文字の指定方法等々は csvライブラリ のところにも書いたので、よろしければそちらもご覧ください。

csvライブラリ

0 件のコメント: