2013/05/14

ライブラリ: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と別途インストールする必要はありません。


参考
csv - Python公式ドキュメント
csv - Python-izm
csv - Doug Hellmann

0 件のコメント: