pythonのcsv reader/出力と入力、読み込み

Pythonのcsv reader

Pythonのcsv reader

Pythonのcsv readerは、CSVファイルを読み込むためのモジュールです。csv readerを使用すると、CSVファイルを行ごとに読み込んで、リストとして取得することができます。

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で、行数指定して読み込み

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()の引数に、startendを指定することで、読み込む行数を指定することができます。startで開始行を、endで終了行を指定します。

このコードでは、startを1、endを3に指定して、1行目から3行目までを読み込んでいます。

csv readerで、1行目(ヘッダ)や最終行(フッタ)をスキップ

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ファイルとして用意したデータを、そのまま辞書型オブジェクトにしたい…という場合のサンプル。

csv readerでCSVファイルの辞書型オブジェクトへの変換は、以下の手順で行います。

  1. csv readerを作成します。
  2. dict()関数を使用して、各行を辞書型オブジェクトに変換します。
  3. 辞書型オブジェクトのリストとして取得します。

具体的なコードは、以下のとおりです。

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ファイルの各列のヘッダ名を取得しています。ヘッダ名を辞書型オブジェクトのキーとして使用しています。