Python で csvファイルを読み込む方法を調べてみた!!

Webアプリを開発するにあたって、元データをDBにインポートして上げる必要がある。
今回のデータはcsv形式で存在しているため、そのファイルを読み込んで逐次DBに登録して行く。

まずはPythonでのファイル操作を習得するために、csvファイルを読み込んで逐次出力してみた


環境

  • Python 3.6.1
  • csvファイル "sample.csv"

今回は特にサードパーティモジュールをインストールする必要なく、標準ライブラリだけで実現することができた。もっとスマートに実現する方法はあるかもしれないが…まずは基本に忠実に…ということで…

実行

以下のコマンドを実行する

import codecs
 
fin = codecs.open('test.csv', 'r', 'shift_jis')
 
for line in fin:
    contents = line[:-2].split(',')
    print(contents)

このプログラムには2つの条件が含まれている

  1. 日本語を含むデータの展開
  2. 区切り文字は ','
  3. 改行コードは 'CR''LF'の2バイト構成

1.に関して、"codec"モジュールを用いて、文字コード指定で展開

fin = codecs.open('test.csv', 'r', 'shift_jis')

これは、"Shift-JIS"コードで記述されたファイルを"r"(読取り専用モード)で開くという意味

2.に関して、同一データを","単位で区切る

contents = line[:-2].split(',')

改行コード単位で"line"変数に値を取得できるが、この場合の改行コードは2バイト構成のため、"[:-2]"で改行コードを削除した構成にしている。更にsplit(',')で、データを","単位で分割し配列内に格納する

3.行末コードは"CR""LF"の2バイト構成になっている

Windows環境でファイルを生成すると、このように2バイト文字は異なる。MacOSX, Linuxではライン末尾に付与するコードは若干異なるので注意が必要