根据给出的省市区的名称实现自动拆分

import re


def cut_address(address):
    res = []

    def _cut(s, address):
        if not address:
            return [], ""
        res = []
        province = re.search(f'([^{s}]+{s})?', address)
        province = province.group(1)
        if province:
            address = address.replace(province, '')
        else:
            return [], address
        res_, address = _cut(s, address)
        res += [province] + res_
        return res, address
    
    value, address = _cut('省', address)
    if value:
        res += value

    # 某些特殊的二级单位名称
    white_list = ["省直辖行政区划"]
    for item in white_list:
        info = re.search(f"({item})", address)
        if info:
            res.append(value:=info.group(1))
            address = address.replace(value, '')

    for s in '市州县区':
        value, address = _cut(s, address)
        if value:
            res += value
    
    return res

湖北省恩施土家族苗族自治州咸丰县 [‘湖北省’, ‘恩施土家族苗族自治州’, ‘咸丰县’]
湖北省咸宁市咸安区 [‘湖北省’, ‘咸宁市’, ‘咸安区’]
湖北省随州市曾都区 [‘湖北省’, ‘随州市’, ‘曾都区’]
湖北省咸宁市赤壁市 [‘湖北省’, ‘咸宁市’, ‘赤壁市’]
湖北省襄阳市保康县 [‘湖北省’, ‘襄阳市’, ‘保康县’]
湖北省宜昌市点军区 [‘湖北省’, ‘宜昌市’, ‘点军区’]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieshenai

为了遇见更好的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值