EXCELのセルの値を正規表現で置換したい。できれば使いなれたPythonでやりたい。
そのような人も結構多いのではないでしょうか。
この記事では、OpenRefineを使用してPythonスクリプトでデータを変換する方法について説明します。
OpenRefineでEXCELファイルを読み込みます。(説明は省略します)
EXCELが正常に読み込まれると以下のようなOpenRefineの編集画面が表示されます。
今回はサンプルデータの列”city”(赤線で囲った部分)の値を正規表現を使って置換してみます。
サンプルデータは以下を使用しています。
https://support.spatialkey.com/spatialkey-sample-csv-data/
OpenRefineでは列全体に対して、正規表現を使って置換操作ができます。使用できる言語は以下の3つです。
- General Refine Expression Language(GREL)
- Python/Jython
- Clojure
正規表現で文字列を操作したい列(この例ではcity)にある▼マークをクリックし、スクリプトを記述するエディタを開きます。
“Add column based on this column…”をクリックすると以下の画面が開きます。プレビュー(Preview)にcity列の値(value)”SACRAMENTO”が表示されています。
ここではこの”SACRAMENTO”の文字列の一部を正規表現を使って置換してみます。
言語はデフォルトでは、OpenRefineのスクリプト言語”General Refine Expression Language(GREL)”になっていますが、今回は”Python/Jython”を使用します。以下の図のように入力します。Pythonスクリプトによって変換された文字列はプレビュー画面で確認することができます。スクリプトを記述する場合に注意する点としては、変換前のデータは”value”という変数に格納されていますので、変数”value”を変換します。そして必ずreturnで値を返却するように記述する必要があることです。正しく変換されていることを確認したらOKボタンをクリックします。OKボタンをクリックすると、ここで入力したカラム名(この例では”city2″)の列が追加され、変換されたデータが格納されます。
いかがでしたでしょうか。EXCELデータの値をPythonを使って自由自在に変換することができます。Pythonを使い慣れている人には大変便利です。