ライブラリ: csv

Python の csv というライブラリについてご紹介します。

import csv

csv は、CSVファイルの取り扱いをカンタンにしてくれるライブラリです。おもな機能は CSV ファイルの読み込み・書き込みです。以下、順に見ていきます。

CSV ファイルへの書き込み

import csv

FILE = 'sample.csv'

title = ['a', 'b', 'c', 'd', 'e']
mylist = [[10, 68, 43, 25, 64],
          [42, 62, 34, 67, 36],
          [44, 41, 59, 77, 68],
          [90,  7, 24, 91, 82],
          [42, 64, 43,  6, 96],
          [76, 74, 62, 64, 66],
          [ 1, 96, 91,  0, 79]]

f = open(FILE, 'wb')

c = csv.writer(f)  # CSV書き込み用オブジェクトの生成
c.writerow(title)  # 1行書き込み
c.writerows(mylist)  # 複数行書き込み

f.close()

CSV ファイルへの書き込みはまず、ファイルを開いた後、 writer() 関数で csv writer オブジェクトを生成します。その後 writer オブジェクトを使って 1 行ずつまたは複数行まとめて書き込んでいきます。 1 行の場合は writerow() 、複数行の場合は writerows() を使います。

上の例では次のような内容の CSV ファイルが作られます。

a,b,c,d,e
10,68,43,25,64
42,62,34,67,36
44,41,59,77,68
90,7,24,91,82
42,64,43,6,96
76,74,62,64,66
1,96,91,0,79

CSV ファイルの読み込み

f = open(FILE, 'rb')

mylist2 = []
c = csv.reader(f)  # CSV読み込み用オブジェクトの生成
for row in c:
    mylist2.append(row)
print mylist2

f.close()

CSV ファイルの読み込みも書き込みと同様の形で行います。保存時に writer() を使ったのに対し、読み込みでは reader() を使ってオブジェクトを生成します。 reader() オブジェクトはイテレータとして扱うことができます。

また、区切り文字やデータを囲うための文字についてはオプションによって指定することが可能です。たとえば、区切り文字が空白で、コンマを含むデータを囲う文字が | の場合は

c = csv.reader(f, delimiter=' ', quotechar='|')

と書くことができます。

さらに、ファイルへの書き込みについては、「データを囲うための文字をどのぐらい使うのか」という部分も指定することが可能です。これには quoting オプションを使います。たとえば、コンマを含むような必要最小限のデータのみを囲いたいときは次のようにします。

c = csv.writer(f, delimiter=' ',
    quotechar='|', quoting=csv.QUOTE_MINIMAL)

その他のスタイルとしては次のようなものがあります。

  • csv.QUOTE_ALL: すべてのデータを囲う
  • csv.QUOTE_NONNUMERIC: 非数値データをすべて囲う
  • csv.QUOTE_NONE: 囲いは使わないなどを選択することが可能です。

・・・以上です。

インストール

csv は標準ライブラリに含まれているので Python 本体に同梱されています。 別途インストールする必要はありません。

参考