あきぞらです。
Pythonでスクレイピングをしていて、
住所の項目を、「都道府県」と「市区町村」、「それ以下」に分けたい場面がありました。
そこで調べてみると、
正規表現を使う方法ですでに同様に分ける方法を編み出している偉大な方々がいらっしゃいました。
今回は、先人方が組んでいただいた正規表現を使って、
上記のように住所を分解してみたいと思います。
住所を分けるにあたって参考にした正規表現
住所を分けるときに参考にした正規表現です。
先人達の努力には感服します。
こちらの正規表現を参考にしました。
Pythonで実装する
Pythonで正規表現で特定の住所を分解する処理を書いていきます。
今回は、住所を引数として受け取り、
「都道府県」、「市区町村」、「それ以降」に分解してprint
する関数(divide_addess
)を作っています。
サンプルコードは以下になります。
import re def divide_addess(address): matches = re.match(r'(...??[都道府県])((?:旭川|伊達|石狩|盛岡|奥州|田村|南相馬|那須塩原|東村山|武蔵村山|羽村|十日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下松|岩国|田川|大村)市|.+?郡(?:玉村|大町|.+?)[町村]|.+?市.+?区|.+?[市区町村])(.+)' , address) print(matches[1]) print(matches[2]) print(matches[3]) if __name__ == '__main__': address = "東京都品川区東五反田一丁目" divide_addess(address)
この処理を書いたPythonファイルを実行すると、以下のように出力されます。
私は(divide_address.py
)というファイル名にしました。
$ python divide_address.py 東京都 品川区 東五反田一丁目
これで住所が分割できましたね!
スクレイピングして住所を解析することはよくあるので、処理をつくっておくと便利です。
では、また。