PythonでCSVファイルを読む
テキストデータを読むバッチを度々作る。
昔からの習慣でカラムの区切りはタブかバックタブを利用し、プログラムでsplitして読んでいた。特にPythonは簡単に使えるので、.strip()してから.split(‘\t’)という習慣があった。
しかし、CSVファイルを出力するプログラムが、先方の仕様で出力されてしまう場合、それに合わせて読み込む必要がある。
区切り文字だったり、各カラムの囲み文字があったり、自前のプログラム対応するのは面倒だ。そんな時csvモジュールを使う。
CSVファイルを読む
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ファイルではあまりないだろうが、下記のようなデータの場合に、都合よく処理してくれる。
"ABC", "DEF", 30
skipinitialspace=Trueが指定されないと、2カラム目は’ “DEF”‘になってしまう。
扱うデータによってはスペースにも意味があるかもしれないので、理解して利用する。
まとめ
Python2の頃は、strとunicodeの違いで、日本語が含まれるファイルを読むのに苦労したが、Python3なら何も気にせず読み込むことができる。
これからはcsvモジュールを利用するようにしてみよう。
- BOM付きUTF-8からBOMを除去するpython
- jythonのヒープメモリ設定
- Kotlin1.2.50がリリースされていた
- macOSをHigh Sierraに更新した。スクリプト実行環境のバージョンは変わったのか
- macOSをMojaveに更新した。スクリプト実行環境のバージョンは変わったか
- pathlib.Pathを調べる
- pyenvでpython環境をインストール
- pyenvとvirtualenvでpython環境を構築
- python unpack
- python3で数値のlistを文字列のlistに変換
コメントを残す