今日もPythonをやりましょう!
以下の記事でtxtファイルについて少しみてみましたが、今回はCSVファイルについてみていくことにしましょう。
- CSVファイルとはなんだ
- 基本的なCSVファイル保存
- 便利!csvモジュールを使ってみる
CSVファイルとはなんだ
まずはそもそもCSVファイルとは何かから確認してみると、
CSV=Comma-Separated Values=カンマで区切られた値
ふむふむ、なんとなくイメージは掴めそうですね。もう少し詳しくwikipediaなんかでみると、テキストデータをいくつかのフィールド(項目)に分け、区切り文字であるカンマ[,]で区切ったデータ形式とあります。ファイル名のお尻(拡張子)に.csvがつくファイル形式ですね。
例えば CSVファイルの中身が a,b,c,d,e というデータになっているとすると、アルファベットが一文字ずつ分けられたデータ(フィールド)として認識されるということですね。
基本的なCSVファイル保存
もったいぶらずに早速PythonでCSV形式のファイルになんか保存してみましょう!とりあえずわけがわからなくても流れに従って、進めていただければと思います。
わけ分からんすぎて無理!!
って方はこの節は飛ばして、下の方にある便利!csvモジュールを使ってみるを参照してください!
まずはテキストエディットを開いて、下の画像内の文字たちを入力してください。(意図 : とりあえず以下内容を含んだ.pyファイルを作成したい)
打つのめんどい、、、という方は以下をコピーして貼り付けてください。
print(",".join(["a","b","c","e","f"]))
入力したら、abcdという名前でデスクトップに保存。
次にファイルの名前を変更します。
こんな感じでファイルのお尻に .py と付け加えてあげてください。これでpythonで扱えるファイルとなります。
ターミナルもしくはコマンドプロンプトを開きまして、
cd ./desktop
と入力して、ファイルが置いてあるディレクトリに移動。
そして以下を実行してみましょう!
python abcd.py > test.csv
何も起きなければOKです!エラーがでた方はquit()を入力して cd ./desktop から再度試してみてください。
すると、Desktopに test.csv というファイルが出力されているかと思います。これでCSVファイルになりました。
一つずつ見ていきましょう、一番最初に用意したファイルの中身は
print(",".join(["a","b","c","e","f"]))
でしたね。printは画面に表示してくれるものですが、
このカッコ内のjoinってなんぞや???
こういうときは公式のPythonドキュメントを見てみましょう。以下リンクです。
str.join
(iterable)iterable 中の文字列を結合した文字列を返します。 iterable に
bytes
オブジェクトのような非文字列の値が存在するなら、TypeError
が送出されます。要素間のセパレータは、このメソッドを提供する文字列です。
とあります。ちょっと理解できる日本語が少なくややこしいですが(^q^)
今回の例でいうと、join([“a”,”b”,”c”,”e”,”f”])のかっこ内にあるa,b,c,d,eの文字たちを”str.join
(iterable)”のstr部分に該当する”,”で結合するといった意味になります。結合という意味でjoinという文字が使用されている訳ですね。joinを利用することで
“,”で繋がれたデータが得られる、つまりCSVデータとして成り立つといった具合です。そして
python abcd.py > test.csv
とすることで、abcd.pyの結果(a,b,c,d,e)をtest.csvファイルに保存できます。
難しい、、という場合でも次に進んじゃいましょう!!以下ではより簡単な方法でCSVファイル化をしてみましょう。
csvモジュールを使ってみる
詳細は省きますが、上の方法では、ちょっとめんどくさいことになったりします。。。
そこでcsvモジュールを使った.CSVファイルの作成を試みましょう!簡単です。
まずはインタラクティブシェルを起動して、csvモジュールをimportとして使える状態にしましょう。
python3
>>>import csv
ここからまずは保存し(開き)たいファイル名と開き方を指定して、open関数でファイルを開きます。
>>>with open("abcd.csv", "a", newline"")as f:
急に難関。
訳わからん文字が含まれてるじゃないかと思われますよね。とりあえずファイルを開くにはこれが必要なのかと思ってください。逃げるに逃げれません。
この先頭に付いているwithは無くてもいいのですが、ファイルを開く際の習慣としてつけておくことをおすすめします。withを使ってファイルを扱っていると、例外が発生したとき(エラーになったとき)にもファイルを必ず閉じてくれます。ファイルを閉じ忘れてしまうと思わぬところで正常に作動しなくなってしまいますので。
open()の1引数目で開きたい(作りたい)ファイル名を指定します。
2引数目でどういう開き方にするかを指定します。基本は a でいいと思います。ファイルに書き加えていく意味です。他には読み取り専用の r だったり、上書きする w だったりがあります。
後ろの as f でfというファイルオブジェクトが生み出すことを表しています。この〜〜オブジェクトとかメソッドとか色々ややこしいですが、最初のうちはなんかあるんだなぐらいで大丈夫です。慣れてきたら必然的に理解が求められるので、その時がくれば公式ドキュメントで見直すと理解が深まり、次へと繋がるので、ぜひ見てみてくださいね!
後ろのnewline=””って何?って方は同様に公式ドキュメントをみていただきたいですが、f がファイルオブジェクトの場合はnewline=””をつけてくださいねと書いてありますので、書いちゃいます。書いてないとデータによっては要らない情報が入ったりするためなので、とりあえず必要なんだなと思っておいてください。それではファイル内に何か情報を与えてみましょう。
先に進みましょう、今はファイルを開いた状態がf(ファイルオブジェクト)という変数に入っているという認識ですね。開いた目的としてはそのファイル内のデータを読み込んだり、追記したりですね。何かを書き込む目的で進めてしましょう。
・・・ sw = csv.writer(f)
これで書き込む準備ができました。まずはインデント(スペース4つ分 or タブ)を忘れずに入力します。csv.writer() のカッコ内に 先ほどのファイルオブジェクトfを入れることで、そのファイルオブジェクトfはwrite()メソッドを持つ任意のオブジェクトとなります。何ですか、美味しいんですか?状態ですが、要は書き込み用にファイル用意してますって感じです。なので、あとはどう書き込むかを考えましょう。
今回は適当なリストを想定してやってみます。()内はリストであればなんでも大丈夫です。
・・・ sw.writerow(["apple","lemon","orange"])
入力したらもう一度Enterを押してください、≈
・・・
となれば成功です!無事に指定したファイルに書き込まれています。ちなみに最後にEnterを押さないとファイルが閉じられず、保存されませんので、しっかりと最後にEnterを押す、Withを使わない場合はclose()することを頭に入れておきましょう。
csv.writerに関して、より詳しくみたいという方は例に従って、以下のPython公式ドキュメントを参照してください。
今回はcsvモジュールのざっくり概要をお話しました、なんとなくわかれば全然大丈夫です。最初は浅く、徐々に深くしていきましょう!
エラーが出て解決をする過程で力がつくと思います!
コメント