住所録の住所行の検出の問題である。
手掛りは住所特有な文字だろう。
#coding: utf-8
import re
msgs = ['仙台市泉区天神澤', \
'山梨県東八代郡大沢町', \
'東京都千代田区霞ヶ関', \
'北海道小樽市小牧二丁目2-3', \
'山県有朋',\
'布施市介']
for i, msg in enumerate(msgs):
ms = []
m1 = re.search(r'都|道|府|県', msg)
ms.append(m1)
m2 = re.search(r'郡|市', msg)
ms.append(m2)
m3 = re.search(r'区|町|村|大字', msg)
ms.append(m3)
m4 = re.search(r'丁|番|号|字', msg)
count = 0
for m in ms:
if bool(m):
count+=1
if count >= 2:
print(msg, ' OK')
else:
print(msg, ' NG')
規模の大きさをグループにして探す。「都・道・府・県」という文字を含んでいること。次は「郡・市」、次は「区・町・村・大字」、最後は「丁・番・号・字」。プログラムではこれらのグループ化された文字を二ヶ所以上含んでいると住所としてしている。従って「山県有朋」や「布施市介」は住所でない。