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つの条件が含まれている
- 日本語を含むデータの展開
- 区切り文字は ','
- 改行コードは '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ではライン末尾に付与するコードは若干異なるので注意が必要