Pythonの学習の過程とか

学習の記録をつけておきましょう。Python3に少しずつ移行していきます。過去の記事のソースを2から3に、、、と考えましたが、新しいことをやったほうがいいですね。

Python3の基礎 ファイル(CSV)を読み込む編

Python3でCSVを読み込んでみます

以前python2でCSVの読み込みを扱いました。

peaceandhilightandpython.hatenablog.com

Pyton2と3では、やり方が少し違うようですので、メモっておきます

importするのは2と同じcsv

import csv #python2も3もここは同じです

for ......

このCSVを読んでみます

data.csv
#今回のCSVの中身 カンマで区切ったデータです。
1,11,111,1111,11111
2,22,222,2222,22222
3,33,333,3333,33333
4,44,444,4444,44444

2と3のちがい

2のときの書き方

f = open('data.csv', 'rb')

dataReader = csv.reader(f)

for row in dataReader:
   print row

3の書き方

import csv

with open('data.csv',  newline='') as f:
    dataReader = csv.reader(f)
    for row in dataReader:
        print(row)

結果は同じ

#実行結果
['1','11','111','1111','11111']
['2','22','222','2222','22222']
['3','33','333','3333','33333']
['4','44','444','4444','44444']

openの行が少し変わっています。

公式ページの解説 14.1. csv — CSV ファイルの読み書き

一応解説があります。newlineって何なんでしょ?

与えられた csvfile 内の行を反復処理するような reader オブジェクトを返します。 csvfile はイテレータ(iterator)プロトコルをサポートし、 next() メソッドが呼ばれた際に常に文字列を返すような任意のオブジェクトにすることができます — ファイルオブジェクトでもリストでも構いません。 csvfile がファイルオブジェクトの場合、 newline=‘’ として開くべきです。

えー、つまりファイルを開くときにはこのnewline=‘'を書いてねってことだと思われます。 じゃあそれ以外の時は?という疑問にたどり着きますね。 例えばファイルではない形式で、csvが来た時とか。 すみません、今はわかんないので、また調べなおして出直します。。。。

ということで、CSVを読み込む編でした。

入門 Python 3

入門 Python 3