dumpされた改行テキスト入りのCSV(TSV)ファイルを、Excelでいい感じに並べた話


背景

「このダンプファイル見といて」
「あ、ファイルダンプしといたんでいい感じにしといてもらっていいですか」

エンジニアならまあよくある話。しかし。。。

これ「テキストの項目に改行入っとるやんけ。。。」

って絶望することはままある。

絵面で言うとこういう状況

エクセルにCSV(TSV)ファイルとかをインポートしようとして。。。

見事にこうなる。うえぇぇ。テキスト型のカラムの中に有る改行のせいでガッタガタで一列に収まらん。。。

そんなわけで、多分これからも度々困る自体に備え、備忘を残す次第。あと我ながら職人芸を披露したなと勝手な自己満足を披露したい次第。

やったこと

初手:手当り次第に改行を消す

とりあえず改行があってはにっちもさっちもいかんということで、悪さをする改行を、正しい改行もろとも消す。
といってもただ消したら復活ができないので、あとで戻せるよう[[br]]みたいな適当な記号に置換しておく。

サクラエディタを使うとこんな感じ

結果はこんな感じになる

2手目:行頭1項目目であるはずの箇所を正規表現で気合で抜き出す

テキストファイルは全ての改行が[[br]]で置換されて1行のテキストファイルに。これを改めて、1レコード1行の形式に直すため、行頭1項目目に相当する箇所を正規表現で抜き出す。ここはちょっと腕の見せ所。幸い今回は、行頭1項目目は「14桁の整数」出会ったことが判明したのでそのように正規表現を使う。

(手前の元々改行だった[[br]])+(15桁の整数)をサクラエディタで置換するとこんな感じ。

さすれば無事に1レコード1行のファイルが完成。

3手目:エクセルにインポート

こうなってしまえばエクセルにインポートするのも容易いこと。おおお、冒頭の絶望が嘘のようだ。

エクセルのインポート結果

最終手:セル内の改行もどきをちゃんとした改行に戻す

これもちょっと癖のあるテクニックなので覚えておきたいところ。エクセルは「Ctrl+J」でセル内の改行を生み出せるという謎の呪文がある。
これで改行もどき[[br]]を置換する。さらば。

置換結果

できたーーーーーーーーーーーーーーーーーー。くーーーーーーーーーーーーーーーーー。

おしまい

こうした日常に潜む、エンジニアの苦悩を襲うタスクを抹殺していきたい。