Pythonにはcsvを扱うための標準ライブラリがあります。
こちらを利用すれば、csvファイルの読み込み、書き込みの処理を
行うことができます。
使用するダミーデータは以下になります。
名前はtestdata.csvで文字コードはutf-8です。
1 2 3 4 5 6 7 8 9 10 11 |
ID,姓,年齢,都道府県 1,牛島,36,大分県 2,大滝,24,石川県 3,金丸,58,福岡県 4,伏見,25,岡山県 5,稲村,13,石川県 6,脇本,23,千葉県 7,赤井,62,広島県 8,野尻,37,福島県 9,長嶋,35,広島県 10,成沢,58,福島県 |
csvモジュールの使用方法
csvの読み込み
with文とcsv.readerを使用してcsvファイルを読み込みます。
1 2 3 4 5 6 |
import csv with open('testdata.csv', encoding='utf-8', newline='') as f: reader = csv.reader(f) for row in reader: print(row) # ['ID', '姓', '年齢', '都道府県']... |
csvモジュールで改行処理を行うので、open関数のnewlineを”とします。
またはcsv.DictReaderでデータをdictで読み込みます。
1 2 3 4 5 6 |
import csv with open('testdata.csv', encoding='utf-8', newline='') as f: reader = csv.DictReader(f) for row in reader: print(row['ID'], row['姓'], row['年齢'], row['都道府県']) # 1 牛島 36 大分県... |
readerでcsvファイルのヘッダーを飛ばしたいときは
readerオブジェクト作成直後にnextメソッドを使用して
ヘッダー行を飛ばします。
1 2 3 4 5 6 7 |
import csv with open('testdata.csv', encoding='utf-8', newline='') as f: reader = csv.reader(f, delimiter=',') next(reader) # nextメソッドを使用して、ヘッダーを飛ばす for row in reader: print(row) # ['1', '牛島', '36', '大分県']... |
csvの内容をDictionaryに格納するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import csv with open('testdata.csv', encoding='utf-8', newline='') as f: reader = csv.reader(f, delimiter=',') header = next(reader) # nextメソッドを使用して、ヘッダーの情報を読み込む id_header = header[0] name_header = header[1] age_header = header[2] prefecture_header = header[3] persons_dic = {} for row in reader: id = int(row[0]) name = row[1] age = row[2] prefecture = row[3] p_dic = {} p_dic[id_header] = id p_dic[name_header] = name p_dic[age_header] = age p_dic[prefecture_header] = prefecture persons_dic[id] = p_dic print("""対象者の情報 ID :{} 姓 :{} 年齢 :{} 都道府県:{} """.format(persons_dic[1][id_header], persons_dic[1][name_header], persons_dic[1][age_header], persons_dic[1][prefecture_header])) # 対象者の情報 # ID :1 # 姓 :牛島 # 年齢 :36 # 都道府県:大分県 |
csvの書き込み
with文とcsv.writerを使用してデータを書き込みます。
open関数のnewline=”は必ず設定してください。
設定しないと、書き込み時に余計な改行が書き込まれます。
1 2 3 4 5 6 7 8 |
import csv write_data = [['ID', '姓', '年齢', '都道府県'], [1, '牛島', 36, '大分県'], [2, '大滝', 24, '石川県']] with open('write_test.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) writer.writerows(write_data) |
コードを実行するとwrite_test.csvが作成されます。
1 2 3 |
ID,姓,年齢,都道府県 1,牛島,36,大分県 2,大滝,24,石川県 |
またはwith文とcsv.DictWriteを使用してdict形式のデータを読み込みます。
1 2 3 4 5 6 7 8 9 |
import csv header = ['ID', '姓', '年齢', '都道府県'] write_data_dic = [{'ID': 1, '姓': '牛島', '年齢': 36, '都道府県': '大分県'}, {'ID': 2, '姓': '大滝', '年齢': 24, '都道府県': '石川県'}] with open('write_test.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.DictWriter(f, fieldnames=header) writer.writeheader() writer.writerows(write_data_dic) |
1 2 3 |
ID,姓,年齢,都道府県 1,牛島,36,大分県 2,大滝,24,石川県 |
既に存在するcsvファイルにデータを追記したいときは
with openのパラメータを’a’にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import csv # writerを使用 append_data = [[3, '金丸', 58, '福岡県']] with open('write_test.csv', 'a', encoding='utf-8', newline='') as f: writer = csv.writer(f) writer.writerows(append_data) # 追記 DictWriterを使用 header = ['ID', '姓', '年齢', '都道府県'] write_data_dic = [{'ID': 3, '姓': '金丸', '年齢': 58, '都道府県': '福岡県'}] with open('write_test.csv', 'a', encoding='utf-8', newline='') as f: writer = csv.DictWriter(f, fieldnames=header) writer.writerows(write_data_dic) |
データを追記したcsvの内容は以下になります。
1 2 3 4 |
ID,姓,年齢,都道府県 1,牛島,36,大分県 2,大滝,24,石川県 3,金丸,58,福岡県 |
ダミーデータの作成
ダミーデータは下記のサイトで作成しました。

テスト用ダミーデータの作成ツール
目次 1. テスト用のダミーデータを一括で作成したい2. テストデータ生成ツール3. 生成されるデータについて4. うまくいったところ5. うまくいかなかったところ6. まとめ テスト用のダミーデータを一括で作成したい プログラムの開発中に
コメント