エヴァのネタバレを防ぐためにも、SNSなぞ見ずにいつものようにPythonの勉強、というか、なかなか終わらない例の簡単なはずの教科書『退屈なことはPythonにやらせよう』をやっています。
でも、今回は頭がこんがらがった。やけに難しかった。
お題は簡単で、「エクセルファイルを、シートごとに、csvファイルに変換する」なのだけど、手順がやたら面倒くさい。
まず、以下をやります。これはまあ普通。
1. ディレクトリからエクセルファイルだけ抜き出す
2. エクセルファイルからシートを取り出す
で、本当はここで「シートのデータをcsvに変換!」ってやってしまいたいのだけど、それができない。
代わりに、こうやります。
3. シート内の行ごとに、リストを作る
4. 3で作ったリストを1行としてcsvに書き込む
これを行の数だけやる。
実際に書いてみると、頭がスパゲッティみたいにこんがらがりました。
エクセルファイルとcsvファイルを同時に開いている状態で、片方からデータを抜き出し、いったんリストを作って、書き込む。
forループが入れ子になって、どの命令をどの段落に書いたらいいかわからなくなる。
「ウキーッ! でもエヴァのネタバレに遭遇するよりマシ!」と思いながら、なんとか頭を整理して、なんとかできました。
その努力の結晶がこれ。
あと、このコードを動かすためのサンプルデータが、なんかマニアックなところにあったのと、複数シートを持つエクセルファイルがサンプルになかったっぽいので、がっちゃんこして、テスト用データを作りました。以下からダウンロードしてください。
なんか最近、薄々気づいてきたのですが、もしかしたら、この地球上に、僕と同じ教科書を僕と同じところまでやっている人は、ほぼゼロなのかもしれません……
もしいたら、その方のために情報提供をいたします。役に立ちますように……