Pythonでいろいろと作成している時に扱っているデータをどこかから読み込みたい、どこかに取っておきたいとかデータを受け渡したいような場合が発生します。
そのような場合の1つの方法としてCSVファイルからのデータの読み込みや書き込みがあります。
今回はその中のCSVファイルからの読み込み方法の説明をしていきたいと思います。
目次
CSVファイルからデータを読み込む場合にはcsv.readerクラスを使用します。
1.CSVファイルからの読み込み方法1
まずはじめにですが、リスト形式としてデータを読み込む場合を考えます。
たとえば、同じフォルダ内のtest.csvファイルにカンマ区切りの、
「 h1,h2,h3
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii」
のようなデータが入ったファイルがある場合を考えます。
この場合にcsv.readerを使用して以下のように記載すると、
import csv # csvモジュールを使ってCSVファイルから1行ずつ読み込む with open('test.csv', encoding='utf8', newline='') as f: reader = csv.reader(f) for row in reader: print(row)
print文にて印字される結果は以下のようになります。
['h1', 'h2', 'h3'] ['aaa', 'bbb', 'ccc'] ['ddd', 'eee', 'fff'] ['ggg', 'hhh', 'iii']
ファイルオープンの行でtest.csvを指定した形式で開いてfとしています。
そのfをcsv.readerに渡して読み込んでreaderという名前をつけています。
最後にfor文にてreaderの中身が1行づつ各行の値を要素とするリスト形式にて順次返されて印字されます。
2.CSVファイルからの読み込み方法2
ちなみにもう1つ、参考用で別のコードとして以下のように単にテキストファイルとして読み込むと、
# csvモジュールを使ってCSVファイルから1行ずつ読み込む import csv with open('test.csv') as f: print(f.read())
結果は以下のようになります。
h1,h2,h3 aaa,bbb,ccc ddd,eee,fff ggg,hhh,iii
3.区切り文字の変更
CSVファイルからデータを読み込む時のデータを分割する区切り文字についてですが、
デフォルトはカンマとなっています。
カンマ区切りのファイルを読み込む時は特に何も指定はいりませんが、読み込む元ファイルがスペース区切りやタブ区切りだった場合には、区切り文字の指定を変えてやらなければなりません。
その場合には、delimiter=''で指定します。
読み込む元ファイルがタブ区切りのファイルの場合には、以下のように区切り文字の指定を、delimiter='\t 'とするとタブごとにデータが区切られて取り出されます。
import csv
# タブ区切りの文字を読み込む with open('test.csv', encoding='utf8', newline='') as f: reader = csv.reader(f, delimiter='\t') for row in reader: print(row)
同様に、読み込む元ファイルがスペース区切りのファイルの場合には、以下のように区切り文字の指定を、delimiter='\t 'からdelimiter=' 'に変更するとスペースごとにデータが区切られて取り出されます。
import csv
# スペース区切りの文字を読み込む with open('test.csv', encoding='utf8', newline='') as f: reader = csv.reader(f, delimiter=' ') for row in reader: print(row)
4.辞書型のデータとして読み込む方法
これまで使用したcsv.readerの場合には、各行をリスト形式に読み込みましたが、csv.DictReaderを使用すると、各行を辞書型で読み込めます。
たとえば、同じフォルダ内のtest.csvファイルにカンマ区切りの、
「 h1,h2,h3
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii」
のようなデータが入ったファイルがある場合を考えます。
この場合にcsv.DictReaderを使用して以下のように記載すると、
import csv # CSVファイルから読み込んで辞書形式のデータを作成 with open('test.csv', encoding='utf8', newline='') as f: reader = csv.DictReader(f) content = [row for row in reader] print(content)
結果は以下のような内容になります。
元ファイル内の1行目が辞書のキーとして扱われ、それ以降の各行ごとがそれに対する辞書型の値としてデータが取り出されます。
[{'h1': 'aaa', 'h2': 'bbb', 'h3': 'ccc'}, {'h1': 'ddd', 'h2': 'eee', 'h3': 'fff'}, {'h1': 'ggg', 'h2': 'hhh', 'h3': 'iii'}]
ちなみに、以下のようにprint文で結果contentの0番目を取り出すと、
import csv # CSVファイルから読み込んで辞書形式のデータを作成 with open('test.csv', encoding='utf8', newline='') as f: reader = csv.DictReader(f) content = [row for row in reader] print(content[0])
印字結果は1行目をキーとして2行目のデータが値として取り出されます。
{'h1': 'aaa', 'h2': 'bbb', 'h3': 'ccc'}
以上、今回はCSVファイルからのデータの読み込み方法についての説明でした。
関連記事:
【Python】おすすめ学習本ランキング8選 - Django Girls and Boys 備忘録
【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録
【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録
【Python】range、break、continue、スライスによる範囲指定などfor文の基本的な使用方法 - Django Girls and Boys 備忘録
【Python】スライスによる範囲指定などスライスの使用方法 - Django Girls and Boys 備忘録
【Python Selenium】各ブラウザ用のドライバーを自動アップデートする方法 - Django Girls and Boys 備忘録
【Python Selenium】Pythonで行うproxy環境設定方法 - Django Girls and Boys 備忘録
【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録
【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録
【Python】pyautoguiを使用したマウスの操作方法 - Django Girls and Boys 備忘録
【Python】pyautoguiによるキーボード操作、キー入力方法 - Django Girls and Boys 備忘録
【Python】Seleniumで新しいタブを開く方法 - Django Girls and Boys 備忘録
【Python】CSVファイルからのデータの読み込み方法 - Django Girls and Boys 備忘録
【Python】CSVファイルへのデータの書き込み方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録