Skip to content

Instantly share code, notes, and snippets.

@clonn
Forked from overmydad/taiwna_address.md
Created June 7, 2021 12:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save clonn/6fa23d8e2de15c312e6f52f7efbb9787 to your computer and use it in GitHub Desktop.
Save clonn/6fa23d8e2de15c312e6f52f7efbb9787 to your computer and use it in GitHub Desktop.

台灣地址解析

此篇紀錄處理門牌地址格式過程遇到的一些問題。

字串解析

地址-WIKI解說,台灣地址大致由下列部分組成

縣市_行政區_街道名稱_門牌編號

EX: 台中市_中區_台灣大道1段_1號

參考In 91前輩的regex作法,縣市、行政區、村里(如果有)比對規則如下 (因為找不到在markdown裡顯示 | 的方法,先用全形|頂著)

解析對象 regular expression
縣市 (\W+?[縣市])
行政區 (\W+?市區|\W+?鎮區|\W+?[鄉鎮市區])
村里 (\W+?村里|\W+?村村|\W+?里村|\W+?里里|\W+?[村里])

詞典查表

除了村里、鄰資訊,剩餘文字歸類到門牌與道路編號(還是有門牌地區名稱可能包含”村”、”里”、”鄰”字樣的,撰寫regexp規則請小心),或者建立字典查表,讓regex以此為基礎做查詢,除斷詞精準,也減少下列問題(異體字較有爭議,在此僅列出問題,不做解說)

例外種類 效正前 效正後
異體字 雲林縣(臺)西鄉 雲林縣(台)西鄉
行政區改制 苗栗縣頭份(鎮) 苗栗縣頭份(市)
行政區合併&更名 台南市(中西區) 台南市(中區)&台南市(西區)
縣市改制&行政區改制 台中(縣)大雅(鄉) 台中(市)大雅(區)

實際範例

如以不破壞原始資料為前提做分類,建議將提取出來的資訊,另開欄位額外處理,避免遺失資訊。以下連結為實做範例&案例展示:

Google 試算表link(左上方建立副本,內文地址為消防局&警局地址),下表為"分頁"底色解說:

解析對象 regular expression
紅色底色 輸入分析的地址清單
綠色底色 "regexp"與"regexp_字典查表"的拆解成果
藍色底色 地址正規名稱的參考詞典
黃色底色 regex一般規則提取的修正參考
紫色底色 參考詞典的資料來源

參考資料

社會經濟資料服務平台

內政部戶政司-戶役政資訊系統資料代碼內容清單

中華郵政:3+2碼郵遞區號Excel檔 2018.01月(自解壓縮檔)

中華民國自由地區鄉鎮市區列表-wiki

內政部戶政司提供的全台村里編號資訊

投遞段範圍使用說明-中華郵政

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment