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 本体に同梱されています。
別途インストールする必要はありません。