CSVファイルはアプリケーション間でのデータ連携によく利用されています。
今回は「CSV」モジュールを使用して、CSVファイルの読込み・書込みの方法を解説したいと思います。
CSVファイル読込み方法
『csv.reader』での読込み
『csv.reader()』の引数にopen関数で取得したファイルオブジェクトをセットします。
そして、for分で回しながら1レコードずつ出力しています。
# モジュールのインポート
import csv
# CSVファイルを読込みモードで開く
with open('sample.csv', 'r', encoding='UTF-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# 出力結果
['名前', '国語', '算数']
['佐藤', '80', '90']
['田中', '60', '70']
for分で取り出したrow変数はlist型なのでインデックスを指定して取り出すことができます。
# モジュールのインポート
import csv
# CSVファイルを読込みモードで開く
with open('sample.csv', 'r', encoding='UTF-8') as f:
reader = csv.reader(f)
cnt = 1
for row in reader:
print(str(cnt) + 'レコード目:' + row[0])
cnt = cnt + 1
# 実行結果
1レコード目:名前
2レコード目:佐藤
3レコード目:田中
『csv.DictReader』での読込み
『csv.DictReader()』の引数にopen関数で取得したファイルオブジェクトをセットします。そして、for分で回しながら1レコードずつ出力しています。
# モジュールのインポート
import csv
# CSVファイルを読込みモードで開く
with open('sample.csv', 'r', encoding='UTF-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row)
# 実行結果
{'名前': '佐藤', '国語': '80', '算数': '90'}
{'名前': '田中', '国語': '60', '算数': '70'}
for分で取り出したrow変数は辞書型なので項目名を指定して取り出すことができます。
# モジュールのインポート
import csv
# CSVファイルを読込みモードで開く
with open('sample.csv', 'r', encoding='UTF-8') as f:
reader = csv.DictReader(f)
cnt = 1
for row in reader:
print(str(cnt) + 'レコード目:' + row['名前'] + ' | ' + row['国語'] + ' | ' + row['算数'])
cnt = cnt + 1
# 実行結果
1レコード目:佐藤 | 80 | 90
2レコード目:田中 | 60 | 70
CSVファイル書込み方法
『csv.writer』での書込み
『csv.writer』の引数にopen関数で取得したファイルオブジェクトをセットします。そしてfor分で回しながら1レコードずつ出力しています。
# モジュールのインポート
import csv
# 出力データ
out_list = [['名前','国語','算数'],['高橋','50','60'],['鈴木','30','40']]
# CSVファイルを書込みモードで開く
with open('sample2.csv', 'w', encoding='UTF-8',newline="") as f:
writer = csv.writer(f)
for out_data in out_list:
writer.writerow(out_data)
# 実行結果
名前,国語,算数
高橋,50,60
鈴木,30,40
『csv.DictWriter』での書込み
『csv.DictWriter』の引数にopen関数で取得したファイルオブジェクトとヘッダー情報をセットしています。
そして、『writeheader()』でヘッダーを出力して、『writerows(out_dict)』でデータを書込んでいます。
# モジュールのインポート
import csv
# 出力データ
item = ['名前','国語','算数']
out_dict = {'名前':'高橋','国語':'70','算数':'80',},{'名前':'鈴木','国語':'30','算数':'40'}
# CSVファイルを書込みモードで開く
with open('sample2.csv', 'w', encoding='UTF-8',newline="") as f:
writer = csv.DictWriter(f, fieldnames=item)
writer.writeheader()
writer.writerows(out_dict)
# 実行結果
名前,国語,算数
高橋,70,80
鈴木,30,40
まとめ
今回は「CSV」モジュールを使用したCSVファイルの読込みと書込みの説明でした。
他にもCSVファイルの読込みと書込みができるモジュールに「numpy」や「pandas」があります。こちらについても使い方をまとめていきたいと思います。
CSVファイルを扱うことは多々あると思うので、皆様のお役に立てば嬉しいです。