CSVファイルってどうやって読み込むの?
CSVファイルに書き込む方法は?
PythonでCSVファイルなどデータが格納されているファイルを読み込んで、データを取得する処理<を実装しなければいけないことは結構あります。Pythonでは簡単に「CSVの読み込み・書き込み処理」を実装することが可能です。
しかし、初心者にとってはそもそもCSVファイルってそもそも何なのかよくわからなかったり、読み込みや書き込み方法がわからない…などの疑問点が浮かんでくるのではないでしょうか。
そこで、今回はPythonにおけるCSVファイルの基本的な使い方をご紹介したいと思います。
なお、Pythonの記事については、こちらにまとめています。
CSVファイルとは
CSVファイルとはComma Separated Valueの略で、カンマ(,)で区切られた値が含まれているテキストファイルです。
CSVファイルは以下のように値とカンマで構成されています。
python,ruby,php,java,c,swift
拡張子は「.csv」形式で、テキストファイルやエクセルで開くことができます。
プログラミングにおいてCSVファイルは頻繁に使用されるものなので、扱い方などを一通り覚えておくととても便利なんです。
CSVファイルの読み込み
ではまずは、CSVファイルを読み込んでみましょう。PythonにおけるCSVファイルの読み書きは、基本的にはcsvモジュールを使用します。
このモジュールを使用することで、さまざまな作業がとても素早く進めることが出来ます。なのでまずは、csvモジュールをインポートすることから始めましょう。
import csv
上記一行のみで、csvモジュールのインポートは完了しました。
また、プログラムのファイル名とモジュール名が衝突した場合エラーが発生するので、モジュール名とプログラムの名前は区別するようにしましょう。
csvモジュールをインポートした後は、CSVファイルを読み込んでみましょう。
プログラムで読み込むCSVファイル以下のとおりです。
ファイル名「start.csv」
Hello,World Hello,Python Hello,Ruby Hello,Java Hello,PHP
サンプルプログラム「csv_sample.py」
import csv with open('start.csv', 'r') as f: reader = csv.reader(f) for line in reader: print(line)
出力結果は以下の通りです。
['Hello', 'World'] ['Hello', 'Python'] ['Hello', 'Ruby'] ['Hello', 'Java'] ['Hello', 'PHP']
上のコードでは、読み込みたいファイルであるstart.csvを開き、その中身をprint関数で出力しています。open関数の第二引数には「’r’」(read)と指定することで、読み込みが可能になっています。
なお、このサンプルコードではwith文を使用しています。with文を使用しなくても同じコードを書くことはできますが、with文を使うとより簡潔でPythonらしいコードに仕上がるのでおすすめです。
with文については、こちらの記事で詳しく解説されているのでぜひご覧ください。
- CSVファイルの読み込み方法まとめ
-
- csvモジュールをインポートする
- モジュール名とプログラムの名前は区別する
- csvを読み込むにはopen関数でファイル名と「r」を指定する
- データの取得はcsvモジュールreader(ファイルオブジェクト)を使用する
- with文を使用することで簡潔に記述できる
CSVファイルの書き込み
CSVファイルの書き込みは先ほどと同じようにcsvモジュールとwith文を使用していきます。
以下のサンプルコードをご覧ください。
import csv word = "Good morning, Hello, Good night" words = word.split(',') with open('start.csv', 'w') as f: writer = csv.writer(f) writer.writerow(words)
上のコードでは、書き込む内容をまずリストに保存し、その後CSVファイルに書き込んでいます。先ほどとの違いは、open関数の第二引数には「’w’」(write)と指定されているところです。
ちなみに、splitメソッドとはカンマで文字列を区切るために使われています。「’w’」と指定することによって、書き込みが可能になっているのです。
先ほどと同じstart.csvというファイルを使用しているので、以前の内容は”Good morning, Hello, Good night”という文字列に上書きされました。
- CSVファイルの書き込み方法まとめ
-
- csvモジュールをインポートする
- モジュール名とプログラムの名前は区別する
- csvに書き込むにはopen関数でファイル名と「w」を指定する
- 書き込みはcsvモジュールwriter(ファイルオブジェクト)を使用する
- 実際の書き込みはwriter row(配列)を使用する
CSVファイルを辞書型オブジェクトに格納する
では基本的な読み書きの方法を学んだところで、CSVファイルのより応用的な内容にも触れていきましょう。
csvファイルを読み込んだ後、辞書型オブジェクトなどに格納する方法をご紹介していきます。
以下の内容のdict.csvというファイルを用意します。
Country_name, Capital_city, other Japan, Tokyo, Osaka USA, Washington, NewYork
以下のコードをご覧ください。
import csv with open('dict.csv', 'r') as f: reader = csv.DictReader(f) for row in reader: print(row)
出力結果は以下の通りです。
OrderedDict([('Country_name', 'Japan'), (' Capital_city', ' Tokyo'), (' Other', ' Osaka')]) OrderedDict([('Country_name', 'USA'), (' Capital_city', ' Washington'), (' Other', ' NewYork')])
上のコードでは、csvモジュールのDictReaderクラスを使用し、辞書への変換を行いました。
読み込むCSVファイルの一行目が辞書のkey(Country_name, Capital_city, Otherなどがkey)となり、2行目以降のデータをひとつずつ取り出し、それらを辞書のvalueとしてkeyに紐づけています。
ご覧いただけるように、一行目の一番目の要素であるCountry_nameは、きちんと二行目の一番目であるJapanや、三行目の一番目であるUSAと組み合わさっています。
まとめ
今回は、Pythonにおける基本的なCSVファイルの読み書き方法をご紹介しました。さまざまなCSVファイルを読み書きを使いこなせるようになると、とても便利です。
この記事を参考にしながら、ぜひマスターしてくださいね!