個人的神殿

プログラミング

pythonの標準ライブラリを知る ~csv~

1.csv.writer()
ファイルオブジェクトを渡すと、それに基づいたcsv.writerオブジェクトを返してくれる。dialectは表現形式の指定なので省略可。**fmtparamsは各種オプションで、lineterminator="\n"とするとWindowsでの余計な空行が入ることを防止できる。

2.csv.writer.writerow(row)
1次元配列を渡してwriterオブジェクトに書き込む。

3.csv.writer.writerows(rows)
2次元配列を渡してwriterオブジェクトに書き込む。

import csv

header = ["a", "b", "c"]
data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

with open("normal.csv", mode="w", encoding="utf-8") as f:
    writer = csv.writer(f, lineterminator="\n")
    writer.writerow(header)
    writer.writerows(data)

以下のようなcsvファイルが作成された。

a,b,c
1,2,3
4,5,6
7,8,9

4.csv.reader(csvfile, dialect="excel", **fmtparams)
fileオブジェクトを渡すと、それに基づいたcsv.readerオブジェクトが返される。

読み込みは、open関数でcsvfileオブジェクトを取得し、csv.reader()にfileオブジェクトを渡し、readerオブジェクトを取得する。その後はreaderオブジェクトをループにかけて、行ごとのデータを取得する。

import csv

with open("normal.csv", mode="r", encoding="utf-8") as f:
    reader = csv.reader(f)
    [print(row) for row in reader]
['a', 'b', 'c']
['1', '2', '3']
['4', '5', '6']
['7', '8', '9']