Pythonのcsv reader
Pythonのcsv readerは、CSVファイルを読み込むためのモジュールです。csv readerを使用すると、CSVファイルを行ごとに読み込んで、リストとして取得することができます。
CSVファイルの読み込み
csv readerの使い方は、以下のとおりです。
import csv
# CSVファイルを開く
with open("data.csv", "r") as f:
# CSV readerを作成
reader = csv.reader(f)
# 各行をリストとして取得
for row in reader:
print(row)
このコードは、”data.csv”というCSVファイルを読み込みます。CSVファイルは、以下の内容になっています。
1,2,3
4,5,6
7,8,9
このコードの出力は、以下のとおりです。
['1', '2', '3']
['4', '5', '6']
['7', '8', '9']
csv readerには、以下のオプションがあります。
オプション | 説明 |
---|---|
delimiter | 区切り文字を指定します。デフォルトはカンマです。 |
quotechar | 引用符を指定します。デフォルトはダブルクォーテーションです。 |
skipinitialspace | 各行の先頭の空白をスキップします。デフォルトはTrueです。 |
quoting | 引用符の処理方法を指定します。デフォルトはQUOTE_MINIMALです。 |
quotingの値
値 | 説明 |
---|---|
QUOTE_MINIMAL | 必要に応じて引用符を追加します。 |
QUOTE_ALL | すべてのデータを引用符で囲みます。 |
QUOTE_NONNUMERIC | 数字以外のデータを引用符で囲みます。 |
関連 PythonのCSV作成 リストのファイルへの出力方法
関連 Pythonでcsv読み込み numpyで配列を入力・出力
csv readerで、行数指定して読み込み
csv readerで、行数指定して読み込みするサンプルコードは、以下のとおりです。
import csv
# CSVファイルを開く
with open("data.csv", "r") as f:
# CSV readerを作成
reader = csv.reader(f)
# 1行目から3行目までを読み込む
for row in reader[:3]:
print(row)
このコードは、”data.csv”というCSVファイルを読み込みます。CSVファイルは、以下の内容になっています。
1,2,3
4,5,6
7,8,9
このコードの出力は、以下のとおりです。
['1', '2', '3']
['4', '5', '6']
['7', '8', '9']
csv.reader()
の引数に、start
とend
を指定することで、読み込む行数を指定することができます。start
で開始行を、end
で終了行を指定します。
このコードでは、start
を1、end
を3に指定して、1行目から3行目までを読み込んでいます。
csv readerで、1行目(ヘッダ)や最終行(フッタ)をスキップ
csv readerで、1行目(ヘッダ)や最終行(フッタ)をスキップするサンプルコードは、以下のとおりです。
import csv
# CSVファイルを開く
with open("data.csv", "r") as f:
# CSV readerを作成
reader = csv.reader(f)
# ヘッダをスキップする
next(reader, None)
# フッタをスキップする
for row in reader:
if row[-1] != "フッタ":
print(row)
このコードは、”data.csv”というCSVファイルを読み込みます。CSVファイルは、以下の内容になっています。
1,2,3
4,5,6
7,8,9
フッタ
このコードの出力は、以下のとおりです。
['1', '2', '3']
['4', '5', '6']
['7', '8', '9']
csv.reader()
の戻り値は、イテレータです。next()
関数を使用して、イテレータの最初の要素を取得することができます。この場合は、ヘッダを取得してスキップしています。
また、for
ループの条件式で、フッタ行をスキップしています。この場合は、最終行の値が「フッタ」かどうかを判定しています。
CSVファイルの辞書型オブジェクトへの変換
CSVファイルとして用意したデータを、そのまま辞書型オブジェクトにしたい…という場合のサンプル。
csv readerでCSVファイルの辞書型オブジェクトへの変換は、以下の手順で行います。
- csv readerを作成します。
dict()
関数を使用して、各行を辞書型オブジェクトに変換します。- 辞書型オブジェクトのリストとして取得します。
具体的なコードは、以下のとおりです。
import csv
# CSVファイルを開く
with open("data.csv", "r") as f:
# CSV readerを作成
reader = csv.reader(f)
# 各行を辞書型オブジェクトに変換
data = [dict(zip(reader.fieldnames, row)) for row in reader]
# 辞書型オブジェクトのリストとして取得
for item in data:
print(item)
このコードは、”data.csv”というCSVファイルを読み込みます。CSVファイルは、以下の内容になっています。
name,age,address
taro,20,tokyo
hanako,22,osaka
このコードの出力は、以下のとおりです。
{'name': 'taro', 'age': 20, 'address': 'tokyo'}
{'name': 'hanako', 'age': 22, 'address': 'osaka'}
csv.reader()
の戻り値は、イテレータです。for
ループで各行を取得し、dict()
関数を使用して辞書型オブジェクトに変換しています。
また、fieldnames
属性を使用して、CSVファイルの各列のヘッダ名を取得しています。ヘッダ名を辞書型オブジェクトのキーとして使用しています。