社内SEの話

日々起きたことの記録用

正規表現で市町村を抽出する

↓プログラミングで副業を考えたらこちら↓

f:id:boonv4m312s:20200120122440j:plain

Excelマーケティング資料を作成しているときに、市町村情報だけを使うケースが度々発生します。

分析したい粒度と登録されている粒度が同じなら簡単に抽出してデータを提出すれば終わりなのですが、現実はそうは行きません。

指定した項目外に住所情報を登録しているケースは100歩譲って目をつぶりましょう。

そのうえで都道府県から市町村そして最後は番地まで登録されている情報から市町村のみを抽出したい・・・

大抵の場合は正規表現を使ったプログラムを作成(pythonならre.match)して正規表現に一致したものをリスト化するというケースが大半だと思います。

ただベースの資料がExcelの場合に一度プログラム対応可能な形に変換かプログラム側で対応させて抽出させる必要があります。それだけで抽出に時間がかかってしまいます。

VScodeサクラエディタ上で余分な情報を置換で削除してExcelに戻すといった流れで目的の市町村だけを抽出する事はできないか・・・正規表現でいろいろ調べて見ました。

Excelの列を全部VScodeに貼り付け後、都道府県情報を削除し市町村以外を削除し、再度Excelに列ごと貼り付けをすればOKみたいな例。

目的の形

千葉県浦安市舞浜1−1

上記の住所の場合は

千葉県浦安市舞浜1−1

都道府県と番地情報を消して

浦安市

(最近千葉ニーランドに行けてない)

都道府県情報を消す

(東京都|北海道|(?:京都|大阪)府|.{2,3}県)  

この正規表現は偉大なる方の情報を使っております。

gist.github.com

都道府県だけ抽出したら空白で置換します。

市町村に一致した以降の文字列を一致させる

(?<=[市区町村])([^市区町村]+$)  

都道府県だけ消された状態で空白を置換することで市町村だけを抽出することになります。

今回の抽出条件では要件をみたしたので、深堀はしませんが、例えば〇〇市△△区があると〇〇市△△区と表示されてしまいます。その場合は別のロジックを考えないといけないかも知れません。

余談

郵便番号って今回のケースで使えそうなんですが法人郵便番号な会社を相手にするとうまく行きません。

指示する側は簡単に市町村単位で売上を見たいって気軽に言いますが、簡単にいかないのがわかってくれません。

最後に

いかがでしたか? お役に立ちましたでしょうか? 今後もブログの方を更新していきますのでよろしくお願いします。 最後になりますが、もしよろしければ読者の皆様からご支援いただけるのであればご支援いただきたく思います。 Amazon欲しい物リストを公開していますので、ご支援よろしくお願いします。 www.amazon.jp
またTwitterYoutubeもやっています。よければフォロー、チャンネル登録をお願いします。
Twitter: @whiteye8780
www.youtube.com