IT技術者は作業が早いと思いませんか?
大量のデータに何らかの加工をしないといけなくなったとします。
加工内容は何でも良いですが、例えば、CSV形式で取引先からもらった発注データの行毎の末尾に特定の文字列を付与しないといけないとか、CSVの区切り文字がカンマのデータをもらったが、自社のシステムはタブ区切りじゃないと取り込めないとか。
こういう時に貴方ならどうしますか?
数件のデータであればメモ帳やExcelなどでCSVファイルを開いて一行一行書き換えていくことも出来るでしょう。
データが100件だったらちょっとうんざりします。
データが1万件だったら絶望します。
そこで今回紹介するのは、テキストエディタと簡単な正規表現を利用したデータ加工の技術です。
用意するもの
多機能なテキストエディタであれば何でも良いですが、取り敢えずテキストエディタ入門に最適な「サクラエディタ」をインストールしてください。
ダウンロード先
https://sakura-editor.github.io/
※リンク先のページの見出し「最新版ダウンロード」下のリンク「インストーラ、パッケージダウンロード」から最新版インストーラーをダウンロードしてください。。
サクラエディタインストール手順
本来は何も考えずに次へ次へと画面を進めればインストールが完了しますが、念のためインストール手順も紹介しておきます。
手順1
ダウンロードしたexeファイルを実行します。続行しますかと聞かれるので「はい」を選択して次に進みます。
※WindowsのUACが有効な場合はUACの確認メッセージも表示されますが、その場合も了承して先に進みます。
手順2
そのまま「次へ」で先に進みます。
手順3
インストール先を指定します。特にこだわりがなければそのまま「次へ」を選択します。
手順4
サクラエディタ本体以外に余分なものをインストールしたくなければチェックを外します。特にこだわりがなければ「次へ」を選択します。
手順5
サクラエディタの設定の保存方法を指定します。画面内の説明にある通り何も変更せず「次へ」を選択します。
手順6
スタートメニュー内に作成するショートカット名を指定します。通常は何も変更せず「次へ」を選択します。
手順7
サクラエディタを起動する方法を選択します。
初期値は上三つのみチェックが付いており、何も変更しなくても問題は無いですが、個人的には下から三つ目の
「SAKURAで開く」メニューの追加
も選択しておくことを推奨します。
これはファイルを右クリックした際に表示される項目のなかに「SAKURAで開く」を追加します。
直接サクラエディタを指定してファイルを開くことが出来るようになるので便利です。
手順8
インストール内容の確認画面が表示されます。何も考えずこのまま「インストール」を選択します。
手順9
インストールが完了しました。では早速サクラエディタを起動してみましょう。
サクラエディタでよく使う便利な機能
矩形選択
「矩形選択」という言葉はご存じでしょうか?
例えばメモ帳で文字列を選択する場合、複数行を同時に選択することができます。
このメモ帳に書かれている文字列の2文字目から4文字目の文字列を2行目から5行目までコピーして抜き出したい場合はどうすれば良いでしょうか?
メモ帳で対応する場合は2行目から5行目まで順番に2文字目から4文字目までを選択、コピーして抜き出し先に張り付ける作業を繰り返す必要があります。数行であれば問題は無いですが、これが何十行、何百行だったら困りますね。
そこで高機能テキストエディタが持っている「矩形選択機能」を使用します。
まずはサクラエディタで今回のテキストファイルを開きます。
2行目の2文字目の前までカーソルを移動させ、キーボードのALTキー押しながら5行目までカーソルを下に移動します。
引き続きALTキーは押しっぱなしのまま、カーソルを4文字目まで右に移動します。
そうすると、以下の画像の様に部分的な複数行の選択が出来ているかと思います。
これが「矩形選択」です。
選択が出来ればctl+Cでコピーが出来ます。
このまま別のテキストエディタやExcelなどに張り付けることが出来ます。
また、矩形選択をした状態でBS(BackSpace)キーを押せば対象の箇所だけが消えます。
行の先頭文字列から何文字目までを一気に削除したいといったケースで便利です。
この様に、矩形選択を使いこなすことがデータ加工作業の時短に繋がります。
よく覚えておいてください。
矩形選択を利用した一括挿入
例えば複数行の文字列の先頭に対して、何らかの固定文字列を追加したい時に、前述した矩形選択の操作で一括挿入が行えます。
まず、文字列を挿入する開始行の一番左にカーソルを移動します。
キーボードのALTキーを押しながら、文字列を挿入したい行の終わりまで、カーソルを矢印キーで下に移動します。
試しにスペースキーを押してみましょう。
スペースがALTで選択した複数行に対して、一度に挿入されました。
スペースの様に特定のキーを一文字だけ挿入するだけではなく、複数の文字を入力すれば、矩形選択した全ての行に入力した文字が書き込まれます。
また、文字列を予めコピーしておくことで、ALTで複数行を選択し、CTL+Vでペーストすると対象の選択行に対してまとめてペーストすることも出来ます。
個人的な活用例では、データベース接続ソフト上で作成したSQL(データベース接続ソフトだとSQLの入力補完などがあり書きやすい)をいったんテキストエディタに張り付けて、VBAなどのプログラム内でSQL文を変数に代入する記述をする箇所を、上記の矩形選択を駆使して一気に作ります。
便利ですよ。
正規表現と置換機能を利用した一括置換
皆さまは正規表現という言葉をご存じでしょうか?
プログラミング経験の浅い人であれば知らない人も居るかも知れません。
正規表現とは、パターンマッチングの標準化された手法です。
例えば、MS Accessでクエリを作る場合に、文字列の部分一致を条件にデータを取得する際には、LIKE “*部分一致させたい文字*” というようにアスタリスクで文字列を囲みます。
このアスタリスクでは「0文字以上の何らかの文字列」という意味が含まれていることになります。
これもパターンマッチングの一種であり、正規表現の一種です。
正規表現では、前述したアスタリスク以外にも様々な特殊文字が存在し、それぞれに意味があります。それらを駆使することで複雑なパターンマッチングを実装できます。
この正規表現ですが、データ加工の作業においては、「正規表現」+「文字列置換」を組み合わせることで、作業スピードは格段に向上します。
尚、正規表現はWindows標準搭載のメモ帳では使用できません。
今回のサクラエディタでは、無料で利用でき、機能が豊富であり、正規表現も特別な設定をすることなく使用できるという理由から紹介しましたが、他にもメジャーな高機能テキストエディタは色々有り、同様の機能は実装されています。
よって、まずはテキストエディタ入門としてサクラエディタを導入し、操作に馴れたらより好みにあったテキストエディタを試してみるのも良いかと思います。
さて、話が脱線しましたが、サクラエディタを使った「正規表現」+「置換」を実際に試してみましょう。
正規表現を利用した置換処理例
サクラエディタで対象のテキストファイルを開き、CTLキー+Rキーを押します。すると以下のウィンドウが表示されます。
これはサクラエディタで置換を行うための画面です。※余談ですが、Rキーが置換のショートカットなのは、ReplaceのRが由来だと勝手に思い込んでいます。合ってるかは知りませんが…。
この画面の項目で「正規表現」にチェックを付けてください。このチェックが付いていないと正規表現は有効になりません。
さて、「置換前」と「置換後」と命名された項目に文字列を設定して「すべて置換」ボタンを押すと、「置換前」で入力した文字列に一致する文字列がテキスト内に含まれていた場合に、「置換後」に入力した文字列で一括で置換される仕組みなのですが、今回は以下のように入力してください。
置換後: 空白(何も入力しない)
このまま「すべて置換」ボタンを押します。
改行がすべて外れ、一行だけの文字列に変わりました。この結果から、置換前の文字列で指定した ¥r¥n が改行を表していることがなんとなく理解できると思います。
正規表現においては、¥r と ¥n はそれぞれが改行を意味しますが、改行にも実は二種類有り、文字コードレベルで見ると別の文字コードが使われています。
ただ、Windows環境で生成されたデータの改行であれば、大抵は ¥r¥n で改行を検出できます。
今回の置換処理では、改行があれば、空白に置き換える(空白=消す)指示が実行されたことになります。
こういった特殊なパターンマッチングはメモ帳では出来ないですし、Excelなどでも標準機能では出来ません。
正規表現を使ってCSVデータをExcelにキレイに張り付ける
一般的なパソコンの設定では、ファイルの拡張子がCSVになっている場合、そのファイルを開こうとすると、自動的にExcelが立ちあがり、Excel内でCSVファイルが開かれます。
この仕組みは一見親切に見えますが、日付っぽい文字列を勝手に変換したり、0埋めした数字の前ゼロを勝手に取ってしまったりと余計なことまでしてしまいます。
じゃあ、Excelのシートの全セルを書式を文字列に変更し、CSVファイルをメモ帳で開き、中身をそのままシートに貼り付けても、カンマ区切りのCSVの場合は、Excelの自動変換みたいにセルでデータを区切ってはくれません。
Excelのテキスト取り込みウィザードを使っても良いかも知れませんが面倒です。
サクッとExcelに貼り付けたい時に正規表現が役立ちます。
CSVデータをExcelに貼り付ける手順例
- 空のExcelを開きシート全体の書式を文字列にします。
- CSVファイルをサクラエディタで開き、CTL+Rで置換を呼び出します。
- 置換前に ,(カンマ) 置換後に ¥t を指定して「すべて置換」を押下します。
- ,(カンマ)がタブに置き換わったら、CTL+Aで全選択して、CTL+Cでコピーします。
- Excelのシートに対してCTL+Vで貼り付けます。
どうでしょうか? 勝手に変換されることなく、ちゃんとセルで区切られてデータが貼り付きましたよね。
今回のポイントは、カンマ区切りからタブ区切りに変更したことです。
正規表現では、¥t がタブを意味します。
今回の手順とは逆に、Excelのシートをコピーしてサクラエディタに貼り付けてみるとわかりますが、Excelのセルとセルの間はタブで区切られています。※内部仕様はどう扱っているわかりませんが。
よって、セル毎に区切られた状態でデータを貼り付けたければ、貼り付ける元のデータをタブで区切ってやればよいという訳です。
個人的によく使う正規表現例
正規表現で使用できる特殊な文字は色々ありますが、まずは個人的に業務でよく使う正規表現の例を紹介します。
正規表現文字 | 説明 |
---|---|
¥t | タブ |
¥r¥n | 改行 |
^[¥r¥n] | 行の先頭の改行 ^が行の先頭 |
[0-9] | 0から9の半角数字 |
[ア-ン] | アからンまでの半角カナ |
個人的な正規表現の使い方では、CSVデータの加工や、プログラム内に埋め込むSQL文の整形程度なので、これぐらいの正規表現が使えれば良く、必要によって他の文字も調べながら使っています。
尚、正規表現自体の紹介や解説した記事自体はネットにたくさん存在するため、当ブログでは割愛しますが、正規表現で使われる特殊文字の一覧は以下のリンク先のブログが分かりやすかったので紹介しておきます。
基本的な正規表現一覧
https://murashun.jp/blog/20190215-01.html
まとめ
いかがでしたでしょうか。
今回紹介したのは、サクラエディタの矩形選択と置換の使い方、簡単な正規表現の使い方です。
プログラミングのなかで正規表現を使ってパターンマッチングする場合は、もっと複雑な正規表現を組み合わせたりしますが(よくあるのがメールアドレスとかでしょうか。@が真ん中にあって、ドットが含まれていて…とかのチェック)、データ加工の現場では、今回紹介したような矩形選択や簡単な正規表現だけで十分事足りることが大半です。
また、今回はサクラエディタを使ったデータ加工テクニックを紹介しましたが、ITエンジニアの世界ではテキストエディタは好みが人それぞれあり、あたかも宗教のように宗派や派閥が存在します。
テキストエディタの入門としてはサクラエディタで間違いはないと思いますが、慣れたら色々試して、より自分に合ったテキストエディタを見つけられると、より作業の効率化に繋がると思います。
因みに私は、コーディングにはSublime Textか秀丸エディタ、データ加工にはサクラエディタを使い分けています。
↓当記事を書いた後に、おすすめのテキストエディタを紹介した記事を書いております。
良かったらこちらもご参照ください。
是非活用して頂ければと思います。
それではごきげんよう。