初めてのPython --CSV読み込み編--

こんばんは。
今日は目標の1に取り掛かります。

1.CSV処理をやってみる(読み込みから集計くらい?)

CSVファイルを用意

会社ならいくらでもあるCSVファイルですが、自前PCだと意外とない。
ということで、ぐぐって先頭にあったこちら。なんでもいいので、一番上にあったファイルを使います。

Shift-JISで大丈夫なんだろうかと思いつつ、そこは後で考えよう。。
お試しなので先頭50行だけ切り取ったファイルを作って使います。

CSVファイルを読み込む

参考にしたのはこちら。シンプルだったので。

え、、こんな簡単に?
コピペして、ファイルパスだけ変更して、readCSV.pyで保存。

import csv
import pprint

with open('data/c01_50.csv') as f:
   print(f.read())

実行する。

無題

・・・出来た。簡単すぎる。

文字コード指定して読み込む

あまりにも簡単だったので、文字コードの対応もやってみる。
公式ドキュメントを見ると、encodingだけ指定すれば良さそう。

やってみる。

with open('data/c01_50.csv', encoding='utf-8') as f:
   print(f.read())

怒られた。

無題

読み込めないと言っているので、コードは間違ってなさそう。
CSVファイルの文字コードをUTF-8に変更して保存し、再実行。

無題

出来た。簡単。

引数の指定方法を調べる

リファレンスを見て気になったのが引数の指定方法

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

これを見た感じ、第一引数は必須、第2以降はあってもなくてもよくて、順番も特に決まってなさそう。
でも別のページにはこんな記述もある。

with open('eggs.csv', 'w', newline='') as csvfile:

第二引数、何?!
modeを指してるんだろうけど、"mode="は?省略していいの??
推測としてはリファレンスの順番であれば省略してOK、そうじゃなければ名前も書いてね、ということかな??

実験!
正しい順序で名前なし→成功

無題

間違った順序で名前なし→実行エラー

無題

間違った順序で名前あり→成功

無題

ということで、Pythonではリファレンスどおりの順番であれば省略してOK、そうじゃなければ名前も書いてねというルールのようです。

慣れない言語だと、リファレンスを読むことすら難しいということがわかりました。
(よく読めばどこかに書いてあるのかもしれませんが・・・)

今日はここまで。

次回は列ごとに読み込んだり出来るといいかなぁ。

この記事が気に入ったらサポートをしてみませんか?