Pythonでデータを扱う場合、
csvファイルを読み込んだり、出力することがあります。
そんな時は標準モジュールのcsvを使えば簡単です。
CSVをリストとして読み込む
csvモジュールのreader,writerを使うだけです。
読み込む
import csv data = [] with open("file.csv","rb") as f: reader = csv.reader(f) for row in reader: data.append(row)
書き込む
import csv output_data = ["書き込む","データ","だよ"] with open("file.csv","wb") as f: writer = csv.writer(f) # csv用のヘッダーがデータにない場合は先に書いておく # writer.writerow(["header","data","だよ"]) for data_row in output_data: writer.writerow(data_row)
csvを辞書として読み込む、書き込む
csvモジュールは、辞書として読み込んだり、辞書をcsvに書き込むクラスを持っています。
それら(DictReader,DictWriter)を使うと簡単。
リストで読み込んで辞書に直したりする必要がありません。
読み込み
import csv data = [] with open("file.csv","rb") as f: reader = csv.DictReader(f) for row in reader: data.append(row) # rowは辞書型になる
書き込み
ヘッダーを書き込み用オブジェクトに渡すのと、ヘッダーを明示的に書き込むことに注意。
import csv data = [{"辞書型":"データ","だ":"よ"}] header = data[0].keys()#ヘッダー用のデータを作っておく with open("file.csv","wb") as f: # headerも渡してやる # 渡した順番が列の順番になる writer = csv.DictWriter(f,header) # そのままだとヘッダーは書き込まれないので、ここで書く header_row = {"k":k for k in header} writer.writerow(header_row) for row in data: writer.writerow(row)