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

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

csv ファイルを扱うには標準ライブラリの csv が便利です。

import csv

csv を使うときのおおまかな流れは次のとおりです。

  1. ファイルオブジェクトを開く
  2. ファイルオブジェクトを csv.reader()csv.writer() に渡す
  3. 生成されたcsvオブジェクトのメソッドを使う
  4. ファイルオブジェクトを閉じる

csv ファイルの読み込みは次のように書けます。

import csv

with open(FILENAME, 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print row

ここで各 rowlist です。 list の各要素は文字列です。数値として扱いたいときなどは読み込み後に変換します。

    for row in reader:
        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ライブラリ にも書いたので、よろしければそちらもご覧ください。