Pythonで正規表現:郵便番号

ユーザ・インタフェースで難しいのは入力であると言われている。ここでは自由形式で入力した住所録のデータ(氏名・郵便番号・住所・電話番号)から、氏名、郵便番号、住所、電話番号の文字列を取り出すことを考えた。全くの自由であると処理方法が極めて複雑ななるので、ここではこれらの文字列はそれぞれ一行に書かれているとするが、氏名をはじめに書くときもあれば、郵便番号最初に書くばあいもある。問題は行毎に書かれている文字列を判定する作業である。

最も簡単なものは郵便番号行で「〒」(例:〒888-8888)ではじまる。または行末が「数字3文字-数字4文字」(例:888-8888)、または「数字7文字」(例:8888888)になっているという条件に合う行がそれであるとする。

このような条件に有った文字列を調べるには「正規表現」が便利である。このような正規表現をPythonで書くと以下のようになる:


#coding: utf-8
import re
msgs = ['〒123-4567', '123-4567',  '1234567', '123-45']
for i, msg in enumerate(msgs):
    m1 = re.search(r'^〒', msg)
    m2 = re.search(r'\d{3}\-\d{4}$', msg)
    m3 = re.search(r'\d{7}$', msg)
    if bool(m1) or bool(m2) or bool(m3):
        print(msg, ' OK')
    else:
        print(msg, 'NG')

結果は
〒123-4567 OK
123-4567 OK
1234567 OK
123-45 NG

となり、期待した結果がでる。

郵便番号行の検出が最も簡単である。次は電話番号行の検出、住所行の検出、氏名行の検出を考える。氏名行の検出が手掛りがなく最も困難であると思われる。

黒部渓谷の阿曽原(アゾハラ)

黒部渓谷の中流域に阿曽原(アゾハラ)という地名がある。この地名の由来について「黒部渓谷」(冠松次郎著)に記載があった。それによれば「湯の湧き出る熱いところ」の意味だそうだ。事実こに地域は黒部渓谷のなかでも最も湯が湧き出る量が多いところの一つで、熱湯が川に流れ込むところがいく筋があるという。

現在ではここには温泉山小屋があって「高熱隧道」(吉村昭著)で「胞雪崩」で倒壊した宿舎跡地にその温泉山小屋は建っている。