PythonでCSVファイルを読む

PythonでCSVファイルを読む

テキストデータを読むバッチを度々作る。
昔からの習慣でカラムの区切りはタブかバックタブを利用し、プログラムでsplitして読んでいた。特にPythonは簡単に使えるので、.strip()してから.split(‘\t’)という習慣があった。
しかし、CSVファイルを出力するプログラムが、先方の仕様で出力されてしまう場合、それに合わせて読み込む必要がある。
区切り文字だったり、各カラムの囲み文字があったり、自前のプログラム対応するのは面倒だ。そんな時csvモジュールを使う。

CSVファイルを読む

1
2
3
4
5
6
import csv

with open('sample.csv', 'r') as r:
    reader = csv.reader(r, delimiter=',', quotechar='"', skipinitialspace=True)
    for row in reader:
        print(row)

delimiterは区切り文字。デフォルトは’,’。
quotecharはカラムの囲み文字。デフォルトは'”‘。
skipinitialspace=Trueは、区切り文字の前後のスペースを無視してくれる。CSVファイルではあまりないだろうが、下記のようなデータの場合に、都合よく処理してくれる。

1
"ABC", "DEF", 30

skipinitialspace=Trueが指定されないと、2カラム目は’ “DEF”‘になってしまう。
扱うデータによってはスペースにも意味があるかもしれないので、理解して利用する。

まとめ

Python2の頃は、strとunicodeの違いで、日本語が含まれるファイルを読むのに苦労したが、Python3なら何も気にせず読み込むことができる。
これからはcsvモジュールを利用するようにしてみよう。

同じタグの記事
同じカテゴリの記事

コメントを残す

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

CAPTCHA