CSV ファイルの数値データを list にします。以降のプログラムで
List[0][0]
といった形でデータを呼び、処理が出来るようにします。
- CSV モジュールのインポート
- 文字列データを数値(float)に変換する関数を準備。リスト、サンプルデータの初期化。
- サンプルデータを、sample.csv というファイルに書き込みます。FW0。
- sample.csv を開きます。FR0。文字列データを datastr のリストに、数値化したデータを datanum のリストに保存します。
- 読み出したデータのチェック。
- 変数 row に残っている文字列のリスト を、1 行づつ 4 回書き込みます。FW1。
- datastr の文字列のリスト を ファイルに書き込みます。FW2。
- datanum の数値のリスト をファイルに書き込みます。FW3。
2.のところで
def s2f(x): return float(x)
と関数を定義しているのは、
4.で文字列のリストを数値化する
datanum.append(map(s2f,row))
の
map()
を利用するには、処理が関数でないといけないからです。
## $Id$
## win32
## Python2.5
## csv file io (for numeric data)
import csv
def s2f(x): return float(x)
datastr = []
datanum = []
datasample = [[1.0,2.0],[3.0,4.0]]
fw0 = open('sample.csv','wb')
writer0 = csv.writer(fw0)
writer0.writerows(datasample)
fw0.close()
fr0 = open('sample.csv', 'rb')
reader0 = csv.reader(fr0)
for row in reader0:
datastr.append(row)
datanum.append(map(s2f,row))
fr0.close()
print (reader0.line_num)
r = 1
c = 1
print ('string data [',r,'][',c,'] = ',datastr[r][c])
print ('numeric data [',r,'][',c,'] = ',datanum[r][c])
print(row) # data for row write test, form last row
fw1 = open('csvout1.csv','wb')
writer1 = csv.writer(fw1)
writer1.writerow(row)
writer1.writerow(row)
writer1.writerow(row)
writer1.writerow(row)
fw1.close()
fw2 = open('csvout2.csv','wb')
writer2 = csv.writer(fw2)
writer2.writerows(datanum)
fw2.close()
fw3 = open('csvout3.csv','wb')
writer3 = csv.writer(fw3)
writer3.writerows(datastr)
fw3.close()
0 件のコメント:
コメントを投稿