Pythonでcsv読み書きする方法(ヘッダーのみ、ヘッダー読み飛ばし等)

Pythonでcsv読み書きする方法(ヘッダーのみ、ヘッダー読み飛ばし等)をご紹介します。

条件

  • Python 3.7.0

前提

読み込むcsvファイル

以下のようなcsvのデータを読み込むことを想定します。

  • sample.csv
header1,header2,header3
data11,data12,data13
data21,data22,data23

サンプルソース

ポイントは以下の通りです。

  • ヘッダーのみの読み込み
    • .__next__()を使用します。
  • ヘッダーの読み飛ばし
    • next()を使用します。
  • csv出力
    • .writerow()でリストを指定します。
import csv


def import_csv():

    print('== ヘッダーのみの読み込み ==')
    with open('sample.csv', 'r') as f:
        reader = csv.reader(f)
        header = reader.__next__()  # ヘッダーの読み込み
        print(header)

    print('== ヘッダー以外の読み込み ==')
    with open('sample.csv', 'r') as f:
        reader = csv.reader(f)
        header = next(reader)  # ヘッダーを読み飛ばす

        for row in reader:
            print(row)


def export_csv():

    out_list = []
    for num in range(5):
        out_list.append(num)

    with open('out.csv', 'w') as f:
        writer = csv.writer(f, lineterminator='\n')  # 改行コード(\n)を指定
        writer.writerow(out_list)


def main():
    """
    実処理(main)
    """
    try:
        import_csv()  # csv読み込み
    except FileNotFoundError as e:
        print('エラーです。' + str(e))

    export_csv()  # csv出力


if __name__ == '__main__':
    """
    main関数を実行
    """

    main()

実行結果

== ヘッダーのみの読み込み ==
['header1', 'header2', 'header3']
== ヘッダー以外の読み込み ==
['data11', 'data12', 'data13']
['data21', 'data22', 'data23']

出力されたファイルの内容(out.csv)

0,1,2,3,4

参考

Python公式ドキュメント:CSVファイルの読み書き

https://docs.python.org/ja/3/library/csv.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です