CSVファイルを読み書きする

CSVファイルの読み込み

CSVファイルを読み書きするには csv モジュールを使う。

csv.reader関数は、CSVファイルを読み込むオブジェクトを返す。これを使って1行ずつ処理するわけだ。次の例は、名前とメールアドレスからなるCSVファイルを読み込んで、変換して出力する。

import csv

csvfile = open("mail.csv", "r")
reader = csv.reader(csvfile)
for row in reader:
    print '"%s" <%s>' % (row[0], row[1])

実行:

^o^ > type mail.csv
Andy,[email protected]
Bill,[email protected]
Charlie,[email protected]

^o^ > python csv_read.py
"Andy" <[email protected]>
"Bill" <[email protected]>
"Charlie" <[email protected]>

CSVファイルの書き込み

csv.reader があれば csv.writer もある。csv.writer関数は、CSVファイルに書き込むオブジェクトを返す。そして writerowメソッドで1行ずつ書き込むって感じだ。

import csv

data = [("Andy", "[email protected]"),
        ("Bill", "[email protected]"),
        ("Charlie", "[email protected]")]

csvfile = open("sample.csv", "wb")
writer = csv.writer(csvfile)
for d in data:
    writer.writerow(d)

上の例では書き込むデータとしてタプルのリストを用意しているけど、リストのリストでもいいらしい。注意点としては、書き込み用ファイルをopenするときにバイナリモード “wb” で開くこと。そうでないと余計な改行が出力されてしまう。
実行:

^o^ > python csv_write.py

^o^ > type sample.csv
Andy,[email protected]
Bill,[email protected]
Charlie,[email protected]

その他細かいことは省略

実はCSVファイルには標準というものがない。値がクオートしてあるとかないとか、そういう細かい違いがソフトごとにある。そういう違いを吸収するために、csv.reader や csv.writer には dialect とかその他のパラメータがあるんだけど、ここでは省略する。
詳しい情報はこのあたり。

cf. http://docs.python.jp/2.7/library/csv.html

とりあえず Excel 互換の CSV なら上の例のような簡単な書き方で大丈夫みたいだ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください