Exemple #1
0
def test_rule_init_tricky_input():

    rule = Rule('新北市,中和區,連城路,雙 268之   1號以下')
    assert rule.tokens == [(u'', u'', u'新北', u'市'), (u'', u'', u'中和', u'區'), (u'', u'', u'連城', u'路'), (u'268', u'之1', u'', u'號')]
    assert rule.rule_tokens == set([u'雙', u'以下'])

    rule = Rule('新北市,泰山區,全興路,全')
    assert rule.tokens == [(u'', u'', u'新北', u'市'), (u'', u'', u'泰山', u'區'), (u'', u'', u'全興', u'路')]
    assert rule.rule_tokens == set([u'全'])
Exemple #2
0
def test_rule_init_tricky_input():

    rule = Rule('新北市,中和區,連城路,雙 268之   1號以下')
    assert rule.tokens == [('', '', '新北', '市'), ('', '', '中和', '區'),
                           ('', '', '連城', '路'), ('268', '之1', '', '號')]
    assert rule.rule_tokens == set(['雙', '以下'])

    rule = Rule('新北市,泰山區,全興路,全')
    assert rule.tokens == [('', '', '新北', '市'), ('', '', '泰山', '區'),
                           ('', '', '全興', '路')]
    assert rule.rule_tokens == set(['全'])
Exemple #3
0
def test_rule_match_tricky_input():

    # The address matched by it must have a even number.
    rule  = Rule('信義路一段雙全')

    addr1 = Address('信義路一段')
    addr2 = Address('信義路一段1號')
    addr3 = Address('信義路一段2號')

    assert not rule.match(addr1)
    assert not rule.match(addr2)
    assert     rule.match(addr3)
Exemple #4
0
def test_rule_match_tricky_input():

    # The address matched by it must have a even number.
    rule = Rule('信義路一段雙全')

    addr1 = Address('信義路一段')
    addr2 = Address('信義路一段1號')
    addr3 = Address('信義路一段2號')

    assert not rule.match(addr1)
    assert not rule.match(addr2)
    assert rule.match(addr3)
Exemple #5
0
def test_rule_match_gradual_address():

    # standard rule w/ gradual addresses

    rule = Rule("臺北市中正區丹陽街全")
    assert not rule.match(Address("臺北市"))
    assert not rule.match(Address("臺北市中正區"))
    assert not rule.match(Address("臺北市中正區仁愛路1段"))
    assert not rule.match(Address("臺北市中正區仁愛路1段1號"))

    rule = Rule("臺北市,中正區,仁愛路1段,    1號")
    assert not rule.match(Address("臺北市"))
    assert not rule.match(Address("臺北市中正區"))
    assert not rule.match(Address("臺北市中正區仁愛路1段"))
    assert rule.match(Address("臺北市中正區仁愛路1段1號"))
Exemple #6
0
def test_rule_match_gradual_address():

    # standard rule w/ gradual addresses

    rule = Rule('臺北市中正區丹陽街全')
    assert not rule.match(Address('臺北市'))
    assert not rule.match(Address('臺北市中正區'))
    assert not rule.match(Address('臺北市中正區仁愛路1段'))
    assert not rule.match(Address('臺北市中正區仁愛路1段1號'))

    rule = Rule('臺北市,中正區,仁愛路1段,    1號')
    assert not rule.match(Address('臺北市'))
    assert not rule.match(Address('臺北市中正區'))
    assert not rule.match(Address('臺北市中正區仁愛路1段'))
    assert     rule.match(Address('臺北市中正區仁愛路1段1號'))
Exemple #7
0
def test_rule_repr():

    if six.PY2:
        repr_str = "Rule(u'\\u81fa\\u5317\\u5e02\\u5927\\u5b89\\u5340\\u5e02\\u5e9c\\u8def1\\u865f\\u4ee5\\u4e0a')"
    else:
        repr_str = "Rule('臺北市大安區市府路1號以上')"
    assert repr(Rule('臺北市大安區市府路1號以上')) == repr_str
    assert repr(eval(repr_str)) == repr_str
Exemple #8
0
    def find(self, addr_str):

        addr = Address(addr_str)
        len_addr_tokens = len(addr.tokens)

        # avoid unnecessary iteration
        start_len = len_addr_tokens
        while start_len >= 0:
            if addr.parse(start_len - 1) == (0, 0):
                break
            start_len -= 1

        for i in range(start_len, 0, -1):

            addr_str = addr.flat(i)

            rzpairs = self.get_rule_str_zipcode_pairs(addr_str)

            # for handling insignificant tokens and redundant unit
            if (
                    # It only runs once, and must be the first iteration.
                    i == start_len and len_addr_tokens >= 4
                    and addr.tokens[2][Address.UNIT] in u'村里' and not rzpairs):

                if addr.tokens[3][Address.UNIT] == u'鄰':
                    # delete the insignificant token (whose unit is 鄰)
                    del addr.tokens[3]
                    len_addr_tokens -= 1

                if len_addr_tokens >= 4 and addr.tokens[3][
                        Address.UNIT] == u'號':
                    # empty the redundant unit in the token
                    addr.tokens[2] = (u'', u'', addr.tokens[2][Address.NAME],
                                      u'')
                else:
                    # delete insignificant token (whose unit is 村 or 里)
                    del addr.tokens[2]

                rzpairs = self.get_rule_str_zipcode_pairs(addr.flat(3))

            if rzpairs:
                for rule_str, zipcode in rzpairs:
                    if Rule(rule_str).match(addr):
                        return zipcode

            gzipcode = self.get_gradual_zipcode(addr_str)
            if gzipcode:
                return gzipcode

        return u''
Exemple #9
0
def test_rule_match_rule_all():

    # Be careful of the 全! It will bite you!

    rule = Rule('臺北市,中正區,八德路1段,全')
    assert     rule.match(Address('臺北市中正區八德路1段1號'))
    assert     rule.match(Address('臺北市中正區八德路1段9號'))
    assert not rule.match(Address('臺北市中正區八德路2段1號'))
    assert not rule.match(Address('臺北市中正區八德路2段9號'))

    rule = Rule('臺北市,中正區,三元街,單全')
    assert     rule.match(Address('臺北市中正區三元街1號'))
    assert not rule.match(Address('臺北市中正區三元街2號'))
    assert not rule.match(Address('臺北市中正區大埔街1號'))

    rule = Rule('臺北市,大同區,哈密街,   45巷全')
    assert     rule.match(Address('臺北市大同區哈密街45巷1號'))
    assert     rule.match(Address('臺北市大同區哈密街45巷9號'))
    assert not rule.match(Address('臺北市大同區哈密街46巷1號'))
    assert not rule.match(Address('臺北市大同區哈密街46巷9號'))
Exemple #10
0
def test_rule_match_subno():

    rule = Rule('臺北市,中正區,杭州南路1段,   14號含附號')
    assert not rule.match(Address('臺北市中正區杭州南路1段13號'))
    assert not rule.match(Address('臺北市中正區杭州南路1段13-1號'))
    assert     rule.match(Address('臺北市中正區杭州南路1段14號'))
    assert     rule.match(Address('臺北市中正區杭州南路1段14-1號'))
    assert not rule.match(Address('臺北市中正區杭州南路1段15號'))
    assert not rule.match(Address('臺北市中正區杭州南路1段15-1號'))

    rule = Rule('臺北市,大同區,哈密街,   47附號全')
    assert not rule.match(Address('臺北市大同區哈密街46號'))
    assert not rule.match(Address('臺北市大同區哈密街46-1號'))
    assert not rule.match(Address('臺北市大同區哈密街47號'))
    assert     rule.match(Address('臺北市大同區哈密街47-1號'))
    assert not rule.match(Address('臺北市大同區哈密街48號'))
    assert not rule.match(Address('臺北市大同區哈密街48-1號'))

    rule = Rule('臺北市,大同區,哈密街,雙  68巷至  70號含附號全')
    assert not rule.match(Address('臺北市大同區哈密街66號'))
    assert not rule.match(Address('臺北市大同區哈密街66-1巷'))
    assert not rule.match(Address('臺北市大同區哈密街67號'))
    assert not rule.match(Address('臺北市大同區哈密街67-1巷'))
    assert     rule.match(Address('臺北市大同區哈密街68巷'))
    assert     rule.match(Address('臺北市大同區哈密街68-1號'))
    assert not rule.match(Address('臺北市大同區哈密街69號'))
    assert not rule.match(Address('臺北市大同區哈密街69-1巷'))
    assert     rule.match(Address('臺北市大同區哈密街70號'))
    assert     rule.match(Address('臺北市大同區哈密街70-1號'))
    assert not rule.match(Address('臺北市大同區哈密街71號'))
    assert not rule.match(Address('臺北市大同區哈密街71-1號'))

    rule = Rule('桃園縣,中壢市,普義,連  49號含附號以下')
    assert     rule.match(Address('桃園縣中壢市普義48號'))
    assert     rule.match(Address('桃園縣中壢市普義48-1號'))
    assert     rule.match(Address('桃園縣中壢市普義49號'))
    assert     rule.match(Address('桃園縣中壢市普義49-1號'))
    assert not rule.match(Address('桃園縣中壢市普義50號'))
    assert not rule.match(Address('桃園縣中壢市普義50-1號'))

    rule = Rule('臺中市,西屯區,西屯路3段西平南巷,    2之   3號及以上附號')
    assert not rule.match(Address('臺中市西屯區西屯路3段西平南巷1號'))
    assert not rule.match(Address('臺中市西屯區西屯路3段西平南巷1-1號'))
    assert not rule.match(Address('臺中市西屯區西屯路3段西平南巷2號'))
    assert not rule.match(Address('臺中市西屯區西屯路3段西平南巷2-2號'))
    assert     rule.match(Address('臺中市西屯區西屯路3段西平南巷2-3號'))
    assert     rule.match(Address('臺中市西屯區西屯路3段西平南巷3號'))
    assert     rule.match(Address('臺中市西屯區西屯路3段西平南巷3-1號'))
    assert     rule.match(Address('臺中市西屯區西屯路3段西平南巷4號'))
    assert     rule.match(Address('臺中市西屯區西屯路3段西平南巷4-1號'))
Exemple #11
0
def test_rule_match_rule_all():

    # Be careful of the 全! It will bite you!

    rule = Rule('臺北市,中正區,八德路1段,全')
    assert rule.match(Address('臺北市中正區八德路1段1號'))
    assert rule.match(Address('臺北市中正區八德路1段9號'))
    assert not rule.match(Address('臺北市中正區八德路2段1號'))
    assert not rule.match(Address('臺北市中正區八德路2段9號'))

    rule = Rule('臺北市,中正區,三元街,單全')
    assert rule.match(Address('臺北市中正區三元街1號'))
    assert not rule.match(Address('臺北市中正區三元街2號'))
    assert not rule.match(Address('臺北市中正區大埔街1號'))

    rule = Rule('臺北市,大同區,哈密街,   45巷全')
    assert rule.match(Address('臺北市大同區哈密街45巷1號'))
    assert rule.match(Address('臺北市大同區哈密街45巷9號'))
    assert not rule.match(Address('臺北市大同區哈密街46巷1號'))
    assert not rule.match(Address('臺北市大同區哈密街46巷9號'))
Exemple #12
0
def test_rule_match_gradual_address():

    # standard rule w/ gradual addresses

    rule = Rule('臺北市中正區丹陽街全')
    assert not rule.match(Address('臺北市'))
    assert not rule.match(Address('臺北市中正區'))
    assert not rule.match(Address('臺北市中正區仁愛路1段'))
    assert not rule.match(Address('臺北市中正區仁愛路1段1號'))

    rule = Rule('臺北市,中正區,仁愛路1段,    1號')
    assert not rule.match(Address('臺北市'))
    assert not rule.match(Address('臺北市中正區'))
    assert not rule.match(Address('臺北市中正區仁愛路1段'))
    assert rule.match(Address('臺北市中正區仁愛路1段1號'))
Exemple #13
0
def test_rule_match():

    # standard address w/ standard rules

    addr = Address('臺北市大安區市府路5號')

    # 全單雙
    assert Rule('臺北市大安區市府路全').match(addr)
    assert Rule('臺北市大安區市府路單全').match(addr)
    assert not Rule('臺北市大安區市府路雙全').match(addr)

    # 以上 & 以下
    assert not Rule('臺北市大安區市府路6號以上').match(addr)
    assert Rule('臺北市大安區市府路6號以下').match(addr)
    assert Rule('臺北市大安區市府路5號以上').match(addr)
    assert Rule('臺北市大安區市府路5號').match(addr)
    assert Rule('臺北市大安區市府路5號以下').match(addr)
    assert Rule('臺北市大安區市府路4號以上').match(addr)
    assert not Rule('臺北市大安區市府路4號以下').match(addr)

    # 至
    assert not Rule('臺北市大安區市府路1號至4號').match(addr)
    assert Rule('臺北市大安區市府路1號至5號').match(addr)
    assert Rule('臺北市大安區市府路5號至9號').match(addr)
    assert not Rule('臺北市大安區市府路6號至9號').match(addr)

    # 附號
    assert not Rule('臺北市大安區市府路6號及以上附號').match(addr)
    assert Rule('臺北市大安區市府路6號含附號以下').match(addr)
    assert Rule('臺北市大安區市府路5號及以上附號').match(addr)
    assert Rule('臺北市大安區市府路5號含附號').match(addr)
    assert not Rule('臺北市大安區市府路5附號全').match(addr)
    assert Rule('臺北市大安區市府路5號含附號以下').match(addr)
    assert Rule('臺北市大安區市府路4號及以上附號').match(addr)
    assert not Rule('臺北市大安區市府路4號含附號以下').match(addr)

    # 單雙 x 以上, 至, 以下
    assert Rule('臺北市大安區市府路單5號以上').match(addr)
    assert not Rule('臺北市大安區市府路雙5號以上').match(addr)
    assert Rule('臺北市大安區市府路單1號至5號').match(addr)
    assert not Rule('臺北市大安區市府路雙1號至5號').match(addr)
    assert Rule('臺北市大安區市府路單5號至9號').match(addr)
    assert not Rule('臺北市大安區市府路雙5號至9號').match(addr)
    assert Rule('臺北市大安區市府路單5號以下').match(addr)
    assert not Rule('臺北市大安區市府路雙5號以下').match(addr)
Exemple #14
0
        assert self.dir_.find('小港區豐街') == '81245'

        assert self.dir_.find('中正區') == ''

        assert self.dir_.find('大埔街') == ''
        assert self.dir_.find('台北市大埔街') == '10068'
        assert self.dir_.find('苗栗縣大埔街') == '36046'

if __name__ == '__main__':
    import uniout                                       #Python 的 List 要印出 中文 編碼
    #test_dir = TestDirectory()
    #test_dir.setup()
    #test_dir.test_find_middle_token()

    #r = Rule('台北市信義區市府路10號以下')
    #print r.tokens

    #a = Address('市府路1號')
    #print a.tokens
    #print r.match(a)

    #a = Address('台北市信義區市府路1號')
    #print a.tokens
    #print r.match(a)

    r = Rule('新北市,中和區,景平路,雙  64號以下')
    print (r.tokens)

    a = Address('新北市景平路64巷13弄13號')
    print (a.tokens)
    print (r.match(a))
Exemple #15
0
 def __init__(self, rule_str):
     self.rule_tokens, addr_str = Rule.part(rule_str)
     Address.__init__(self, addr_str)
Exemple #16
0
def test_rule_match_subno():

    rule = Rule('臺北市,中正區,杭州南路1段,   14號含附號')
    assert not rule.match(Address('臺北市中正區杭州南路1段13號'))
    assert not rule.match(Address('臺北市中正區杭州南路1段13-1號'))
    assert rule.match(Address('臺北市中正區杭州南路1段14號'))
    assert rule.match(Address('臺北市中正區杭州南路1段14-1號'))
    assert not rule.match(Address('臺北市中正區杭州南路1段15號'))
    assert not rule.match(Address('臺北市中正區杭州南路1段15-1號'))

    rule = Rule('臺北市,大同區,哈密街,   47附號全')
    assert not rule.match(Address('臺北市大同區哈密街46號'))
    assert not rule.match(Address('臺北市大同區哈密街46-1號'))
    assert not rule.match(Address('臺北市大同區哈密街47號'))
    assert rule.match(Address('臺北市大同區哈密街47-1號'))
    assert not rule.match(Address('臺北市大同區哈密街48號'))
    assert not rule.match(Address('臺北市大同區哈密街48-1號'))

    rule = Rule('臺北市,大同區,哈密街,雙  68巷至  70號含附號全')
    assert not rule.match(Address('臺北市大同區哈密街66號'))
    assert not rule.match(Address('臺北市大同區哈密街66-1巷'))
    assert not rule.match(Address('臺北市大同區哈密街67號'))
    assert not rule.match(Address('臺北市大同區哈密街67-1巷'))
    assert rule.match(Address('臺北市大同區哈密街68巷'))
    assert rule.match(Address('臺北市大同區哈密街68-1號'))
    assert not rule.match(Address('臺北市大同區哈密街69號'))
    assert not rule.match(Address('臺北市大同區哈密街69-1巷'))
    assert rule.match(Address('臺北市大同區哈密街70號'))
    assert rule.match(Address('臺北市大同區哈密街70-1號'))
    assert not rule.match(Address('臺北市大同區哈密街71號'))
    assert not rule.match(Address('臺北市大同區哈密街71-1號'))

    rule = Rule('桃園縣,中壢市,普義,連  49號含附號以下')
    assert rule.match(Address('桃園縣中壢市普義48號'))
    assert rule.match(Address('桃園縣中壢市普義48-1號'))
    assert rule.match(Address('桃園縣中壢市普義49號'))
    assert rule.match(Address('桃園縣中壢市普義49-1號'))
    assert not rule.match(Address('桃園縣中壢市普義50號'))
    assert not rule.match(Address('桃園縣中壢市普義50-1號'))

    rule = Rule('臺中市,西屯區,西屯路3段西平南巷,    2之   3號及以上附號')
    assert not rule.match(Address('臺中市西屯區西屯路3段西平南巷1號'))
    assert not rule.match(Address('臺中市西屯區西屯路3段西平南巷1-1號'))
    assert not rule.match(Address('臺中市西屯區西屯路3段西平南巷2號'))
    assert not rule.match(Address('臺中市西屯區西屯路3段西平南巷2-2號'))
    assert rule.match(Address('臺中市西屯區西屯路3段西平南巷2-3號'))
    assert rule.match(Address('臺中市西屯區西屯路3段西平南巷3號'))
    assert rule.match(Address('臺中市西屯區西屯路3段西平南巷3-1號'))
    assert rule.match(Address('臺中市西屯區西屯路3段西平南巷4號'))
    assert rule.match(Address('臺中市西屯區西屯路3段西平南巷4-1號'))
Exemple #17
0
    #test_dir = TestDirectory()
    #test_dir.setup()
    #test_dir.test_find_middle_token()

    #r = Rule('台北市信義區市府路10號以下')
    #print r.tokens

    #a = Address('市府路1號')
    #print a.tokens
    #print r.match(a)

    #a = Address('台北市信義區市府路1號')
    #print a.tokens
    #print r.match(a)

    r = Rule('新北市,中和區,景平路,雙  64號以下')
    print r.tokens

    a = Address('新北市景平路64巷13弄13號')
    print a.tokens
    print r.match(a)

########NEW FILE########
__FILENAME__ = zipcodetw_server
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import zipcodetw
from flask import Flask, render_template, request, jsonify

app = Flask(__name__)
Exemple #18
0
 def __init__(self, rule_str):
     self.rule_tokens, addr_str = Rule.part(rule_str)
     Address.__init__(self, addr_str)
Exemple #19
0
def test_rule_repr():

    repr_str = "Rule(u'\u81fa\u5317\u5e02\u5927\u5b89\u5340\u5e02\u5e9c\u8def1\u865f\u4ee5\u4e0a')"
    assert repr(Rule('臺北市大安區市府路1號以上')) == repr_str
    assert repr(eval(repr_str)) == repr_str
Exemple #20
0
def test_rule_init():

    rule = Rule('臺北市,中正區,八德路1段,全')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'中正', u'區'),
                           (u'', u'', u'八德', u'路'), (u'', u'', u'1', u'段')]
    assert rule.rule_tokens == set([u'全'])

    rule = Rule('臺北市,中正區,三元街,單全')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'中正', u'區'),
                           (u'', u'', u'三元', u'街')]
    assert rule.rule_tokens == set([u'單', u'全'])

    rule = Rule('臺北市,中正區,三元街,雙  48號以下')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'中正', u'區'),
                           (u'', u'', u'三元', u'街'), (u'48', u'', u'', u'號')]
    assert rule.rule_tokens == set([u'雙', u'以下'])

    rule = Rule('臺北市,中正區,大埔街,單  15號以上')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'中正', u'區'),
                           (u'', u'', u'大埔', u'街'), (u'15', u'', u'', u'號')]
    assert rule.rule_tokens == set([u'單', u'以上'])

    rule = Rule('臺北市,中正區,中華路1段,單  25之   3號以下')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'中正', u'區'),
                           (u'', u'', u'中華', u'路'), (u'', u'', u'1', u'段'),
                           (u'25', u'之3', u'', u'號')]
    assert rule.rule_tokens == set([u'單', u'以下'])

    rule = Rule('臺北市,中正區,中華路1段,單  27號至  47號')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'中正', u'區'),
                           (u'', u'', u'中華', u'路'), (u'', u'', u'1', u'段'),
                           (u'27', u'', u'', u'號'), (u'47', u'', u'', u'號')]
    assert rule.rule_tokens == set([u'單', u'至'])

    rule = Rule('臺北市,中正區,仁愛路1段,連   2之   4號以上')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'中正', u'區'),
                           (u'', u'', u'仁愛', u'路'), (u'', u'', u'1', u'段'),
                           (u'2', u'之4', u'', u'號')]
    assert rule.rule_tokens == set([u'以上'])

    rule = Rule('臺北市,中正區,杭州南路1段,   14號含附號')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'中正', u'區'),
                           (u'', u'', u'杭州南', u'路'), (u'', u'', u'1', u'段'),
                           (u'14', u'', u'', u'號')]
    assert rule.rule_tokens == set([u'含附號'])

    rule = Rule('臺北市,大同區,哈密街,   47附號全')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'大同', u'區'),
                           (u'', u'', u'哈密', u'街'), (u'47', u'', u'', u'號')]
    assert rule.rule_tokens == set([u'附號全'])

    rule = Rule('臺北市,大同區,哈密街,雙  68巷至  70號含附號全')
    assert rule.tokens == [(u'', u'', u'臺北', u'市'), (u'', u'', u'大同', u'區'),
                           (u'', u'', u'哈密', u'街'), (u'68', u'', u'', u'巷'),
                           (u'70', u'', u'', u'號')]
    assert rule.rule_tokens == set([u'雙', u'至', u'含附號全'])

    rule = Rule('桃園縣,中壢市,普義,連  49號含附號以下')
    assert rule.tokens == [(u'', u'', u'桃園', u'縣'), (u'', u'', u'中壢', u'市'),
                           (u'', u'', u'普義', u''), (u'49', u'', u'', u'號')]
    assert rule.rule_tokens == set([u'含附號以下'])

    rule = Rule('臺中市,西屯區,西屯路3段西平南巷,    1之   3號及以上附號')
    assert rule.tokens == [(u'', u'', u'臺中', u'市'), (u'', u'', u'西屯', u'區'),
                           (u'', u'', u'西屯', u'路'), (u'', u'', u'3', u'段'),
                           (u'', u'', u'西平南', u'巷'), (u'1', u'之3', u'', u'號')]
    assert rule.rule_tokens == set([u'及以上附號'])
Exemple #21
0
def test_rule_init():

    rule = Rule('臺北市,中正區,八德路1段,全')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '中正', '區'),
                           ('', '', '八德', '路'), ('', '', '1', '段')]
    assert rule.rule_tokens == set(['全'])

    rule = Rule('臺北市,中正區,三元街,單全')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '中正', '區'),
                           ('', '', '三元', '街')]
    assert rule.rule_tokens == set(['單', '全'])

    rule = Rule('臺北市,中正區,三元街,雙  48號以下')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '中正', '區'),
                           ('', '', '三元', '街'), ('48', '', '', '號')]
    assert rule.rule_tokens == set(['雙', '以下'])

    rule = Rule('臺北市,中正區,大埔街,單  15號以上')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '中正', '區'),
                           ('', '', '大埔', '街'), ('15', '', '', '號')]
    assert rule.rule_tokens == set(['單', '以上'])

    rule = Rule('臺北市,中正區,中華路1段,單  25之   3號以下')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '中正', '區'),
                           ('', '', '中華', '路'), ('', '', '1', '段'),
                           ('25', '之3', '', '號')]
    assert rule.rule_tokens == set(['單', '以下'])

    rule = Rule('臺北市,中正區,中華路1段,單  27號至  47號')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '中正', '區'),
                           ('', '', '中華', '路'), ('', '', '1', '段'),
                           ('27', '', '', '號'), ('47', '', '', '號')]
    assert rule.rule_tokens == set(['單', '至'])

    rule = Rule('臺北市,中正區,仁愛路1段,連   2之   4號以上')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '中正', '區'),
                           ('', '', '仁愛', '路'), ('', '', '1', '段'),
                           ('2', '之4', '', '號')]
    assert rule.rule_tokens == set(['以上'])

    rule = Rule('臺北市,中正區,杭州南路1段,   14號含附號')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '中正', '區'),
                           ('', '', '杭州南', '路'), ('', '', '1', '段'),
                           ('14', '', '', '號')]
    assert rule.rule_tokens == set(['含附號'])

    rule = Rule('臺北市,大同區,哈密街,   47附號全')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '大同', '區'),
                           ('', '', '哈密', '街'), ('47', '', '', '號')]
    assert rule.rule_tokens == set(['附號全'])

    rule = Rule('臺北市,大同區,哈密街,雙  68巷至  70號含附號全')
    assert rule.tokens == [('', '', '臺北', '市'), ('', '', '大同', '區'),
                           ('', '', '哈密', '街'), ('68', '', '', '巷'),
                           ('70', '', '', '號')]
    assert rule.rule_tokens == set(['雙', '至', '含附號全'])

    rule = Rule('桃園縣,中壢市,普義,連  49號含附號以下')
    assert rule.tokens == [('', '', '桃園', '縣'), ('', '', '中壢', '市'),
                           ('', '', '普義', ''), ('49', '', '', '號')]
    assert rule.rule_tokens == set(['含附號以下'])

    rule = Rule('臺中市,西屯區,西屯路3段西平南巷,    1之   3號及以上附號')
    assert rule.tokens == [('', '', '臺中', '市'), ('', '', '西屯', '區'),
                           ('', '', '西屯', '路'), ('', '', '3', '段'),
                           ('', '', '西平南', '巷'), ('1', '之3', '', '號')]
    assert rule.rule_tokens == set(['及以上附號'])
Exemple #22
0
    #test_dir = TestDirectory()
    #test_dir.setup()
    #test_dir.test_find_middle_token()

    #r = Rule('台北市信義區市府路10號以下')
    #print r.tokens

    #a = Address('市府路1號')
    #print a.tokens
    #print r.match(a)

    #a = Address('台北市信義區市府路1號')
    #print a.tokens
    #print r.match(a)

    r = Rule('新北市,中和區,景平路,雙  64號以下')
    print r.tokens

    a = Address('新北市景平路64巷13弄13號')
    print a.tokens
    print r.match(a)

########NEW FILE########
__FILENAME__ = zipcodetw_server
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import zipcodetw
from flask import Flask, render_template, request, jsonify

app = Flask(__name__)