また本を読んでいたところ、csvを読むというやつが出てきたのですが、もしかしたら今後使うかもしれないので、メモがてら記録しておきたいと思います。ずっと勘違いしてましたが、csvは「comma-separated values」のことらしく、, で区切ったデータらしいです。知りませんでしたね。スペース区切るも含まれる(apache logなど)と思ってました。。。 ※なんか色々みたら、まとめてcsvでもいいとの記載もありますね。。。commaではなくてcharacterだしみたいな。
csvファイルを用意する
今回はテストで以下のファイルを用意しました。
※test.csv
テキストああ,35,567,6.17%,6.51
"test,aa",35,506,6.92%,4.46
,で区切りだけど、文字列で使う場合は、””で囲めばいいらしいですよ。へぇ。
読み込んで出力してみる
ファイルを1行ずつ読み込んで、出力してみます。行単位で出して、分離した状態でも出してみます
import csv
file=open("./data/test.csv","r")
csv_file=csv.reader(file)
for row in csv_file:
print("\n")
print("listで吐き出し")
print(row)
print("要素で吐き出し")
print('1つめ:'+row[0]+' 2つ目:'+row[1]+' 3つ目:'+row[2]+' 4つ目:'+row[3]+' 5つ目:'+row[4])
print("\n")
file.close
file=open("./data/test.csv","w")
csv_file=csv.writer(file)
print("上書きしてみる")
csv_file.writerow(["上書きテキスト",1,2,"5.0%",22])
file.close
file=open("./data/test.csv","r")
csv_file=csv.reader(file)
for row in csv_file:
print("\n")
print("listで吐き出し")
print(row)
print("要素で吐き出し")
print('1つめ:'+row[0]+' 2つ目:'+row[1]+' 3つ目:'+row[2]+' 4つ目:'+row[3]+' 5つ目:'+row[4])
print("\n")
file.close
file=open("./data/test.csv","a")
csv_file=csv.writer(file)
print("追記してみる")
csv_file.writerow(["追加テキスト",5,6,"15.0%",44])
file.close
file=open("./data/test.csv","r")
csv_file=csv.reader(file)
for row in csv_file:
print("\n")
print("listで吐き出し")
print(row)
print("要素で吐き出し")
print('1つめ:'+row[0]+' 2つ目:'+row[1]+' 3つ目:'+row[2]+' 4つ目:'+row[3]+' 5つ目:'+row[4])
print("\n")
file.close
※結果
listで吐き出し
['テキストああ', '35', '567', '6.17%', '6.51']
要素で吐き出し
1つめ:テキストああ 2つ目:35 3つ目:567 4つ目:6.17% 5つ目:6.51
listで吐き出し
['test,aa', '35', '506', '6.92%', '4.46']
要素で吐き出し
1つめ:test,aa 2つ目:35 3つ目:506 4つ目:6.92% 5つ目:4.46
上書きしてみる
listで吐き出し
['上書きテキスト', '1', '2', '5.0%', '22']
要素で吐き出し
1つめ:上書きテキスト 2つ目:1 3つ目:2 4つ目:5.0% 5つ目:22
追記してみる
listで吐き出し
['上書きテキスト', '1', '2', '5.0%', '22']
要素で吐き出し
1つめ:上書きテキスト 2つ目:1 3つ目:2 4つ目:5.0% 5つ目:22
listで吐き出し
['追加テキスト', '5', '6', '15.0%', '44']
要素で吐き出し
1つめ:追加テキスト 2つ目:5 3つ目:6 4つ目:15.0% 5つ目:44
openの時にrだったら読み込めて、wだったら上書き、aだと追記ができたみたいです。
何か処理をした際にcsvに蓄積したり、で、蓄積したデータを取り出したりするシーンで使うみたいですよ。
まぁ、mysqlを使うので使わない気がしなくもないですが、databaseがない状態だと使えるのかなぁ。