min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

csvファイルで、前行と同じなら読み飛ばす(Windowsバッチ)

ファイルを読み込むループを回したときに「現在読み込んでいる行の前の行を取得する」が興味深い。

d.hatena.ne.jp

 

COINS.txtビットコイン等の仮想コインが定義してあって

TORIHIKI_DATA.csvには、それを取得した元サイトのデータが並んでいるとする。

f:id:min117:20171217111420p:plain

TORIHIKI_DATA.csv をコイン順に並べ替えるとカブっているのがわかる。

f:id:min117:20171217111840p:plain

どのコインがどのサイトから得られたのか(一意に)分析したいのでカブりを取り除きたい

要はこうしたい。

f:id:min117:20171217111959p:plain

<コード>

Windowsバッチでできる。事前に COINS.txt のコイン名の列は消してから流す。

f:id:min117:20171217112202p:plain

f:id:min117:20171217112430p:plain

やっていること。

COINS.txt のコインコードをキーにして TORIHIKI_DATA2.csvを読み込む。

COINS.txt のコインコードに該当する取得元サイトのコードを表示する。

・読み込んだ行が前行と全く同じだったら読み飛ばす(CONTINUEEEEと表示)

実行してみる。

f:id:min117:20171217112735p:plain

結果は kekka.txt に落ちる。

f:id:min117:20171217111959p:plain

シンプルだけど良い。業務でcsvを扱っていて前行と全く同じ行だったら読み飛ばしてほしいケースが多いが、Windowsだとuniqは無いし、Excelだと微妙にできない(例えばCOINS.txtコインの種類が増えると、都度かなりの手作業が発生してしまう)。その点、このバッチなら(COINS.txt に書き足してから)流すだけ。なにげに色々と応用が効きそうだ。Pythonでもやってみる。