また本を読んでいたところ、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がない状態だと使えるのかなぁ。

コメント