【Python】从文本提取含有地址信息的方法(省市县)

如果我们需要对文本中,判断是否含有某些地址信息,包括省市县等(如果还需要细化到更小需要手动自己创建字典),那么就需要以下的逻辑:

  1. 构建一个全国的省市县的字典表
  2. 遍历整个字典表,对文本做筛选和判断,返回对应的地址信息

本文通过构建中国省份和城市以及各镇区的名称字段,梳理成json格式,省会城市以键对值的关系展示,以下是具体的代码部分:

1. 构建一个全国省份和城市的字典:

import json 

procity_area={
   
   
  "北京": {
   
   
    "北京": ["东城区", "西城区", "朝阳区", "丰台区", "石景山区", "海淀区", "顺义区", "通州区", "大兴区", "房山区", "门头沟区", "昌平区", "平谷区", "密云区", "怀柔区", "延庆区"]
  },
  "天津": {
   
   
    "天津": ["和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "东丽区", "西青区", "津南区", "北辰区", "武清区", "宝坻区", "宁河区", "静海区", "蓟州区"]
  },
  "河北": {
   
   
    "石家庄": ["长安区", "桥西区", "新华区", "井陉矿区", "裕华区", "藁城区", "鹿泉区", "栾城区", "井陉县", "正定县", "行唐县", "灵寿县", "高邑县", "深泽县", "赞皇县", "无极县", "平山县", "元氏县", "赵县", "晋州市", "新乐市", "辛集市"],
    "唐山": ["路北区", "路南区", "古冶区", "开平区", "丰南区", "丰润区", "曹妃甸区", "滦县", "滦南县", "乐亭县", "迁西县", "玉田县", "遵化市", "迁安市"],
    "秦皇岛": ["海港区", "山海关区", "北戴河区", "抚宁区", "青龙满族自治县", "昌黎县", "卢龙县"],
    "邯郸": ["邯山区", "丛台区", "复兴区", "峰峰矿区", "肥乡区", "永年区", "临漳县", "成安县", "大名县", "涉县", "磁县", "邱县", "鸡泽县", "广平县", "馆陶县", "曲周县", "武安市", "魏县"],
    "邢台": ["桥东区", "桥西区", "邢台县", "临城县", "内丘县", "柏乡县", "隆尧县", "任县", "南和县", "巨鹿县", "新河县", "广宗县", "平乡县", "威县", "清河县", "临西县", "南宫市", "沙河市", "宁晋县"],
    "保定": ["竞秀区", "莲池区", "满城区", "清苑区", "徐水区", "涞水县", "阜平县", "定兴县", "唐县", "高阳县", "容城县", "涞源县", "望都县", "安新县", "易县", "曲阳县", "蠡县", "顺平县", "博野县", "雄县", "安国市", "高碑店市", "涿州市", "定州市"],
    "张家口": ["桥东区", "桥西区", "宣化区", "下花园区", "崇礼区", "万全区", "张北县", "康保县", "沽源县", "尚义县", "蔚县", "阳原县", "怀安县", "涿鹿县", "赤城县", "怀来县"],
    "承德": ["双桥区", "双滦区", "鹰手营子矿区", "承德县", "兴隆县", "滦平县", "隆化县", "丰宁满族自治县", "宽城满族自治县", "围场满族蒙古族自治县", "平泉市"],
    "沧州": ["运河区", "新华区", "沧县", "青县", "东光县", "海兴县", "盐山县", "肃宁县", "南皮县", "吴桥县", "献县", "孟村回族自治县", "泊头市", "黄骅市", "河间市", "任丘市"],
    "廊坊": ["广阳区", "安次区", "固安县", "永清县", "香河县", "大城县", "文安县", "大厂回族自治县", "霸州市", "三河市"],
    "衡水": ["桃城区", "冀州区", "枣强县", "武邑县", "武强县", "饶阳县", "安平县", "故城县", "阜城县", "深州市", "景县"]
  },
  "山西": {
   
   
    "太原": ["小店区", "迎泽区", "杏花岭区", "尖草坪区", "万柏林区", "晋源区", "清徐县", "阳曲县", "娄烦县", "古交市"],
    "大同": ["平城区", "云冈区", "云州区", "新荣区", "阳高县", "天镇县", "广灵县", "灵丘县", "浑源县", "左云县"],
    "朔州": ["朔城区", "平鲁区", "山阴县", "应县", "右玉县", "怀仁市"],
    "忻州": ["忻府区", "定襄县", "五台县", "代县", "繁峙县", "宁武县", "静乐县", "神池县", "五寨县", "岢岚县", "河曲县", "保德县", "偏关县", "原平市"],
    "阳泉": ["城区", "矿区", "郊区", "平定县", "盂县"],
    "吕梁": ["离石区", "文水县", "交城县", "兴县", "临县", "柳林县", "石楼县", "岚县", "方山县", "中阳县", "交口县", "孝义市", "汾阳市"],
    "晋中": ["榆次区", "榆社县", "左权县", "和顺县", "昔阳县", "寿阳县", "太谷县", "祁县", "平遥县", "灵石县", "介休市"],
    "长治": ["潞州区", "潞城区", "屯留区", "上党区", "襄垣县", "平顺县", "黎城县", "壶关县", "长子县", "武乡县", "沁县", "沁源县"],
    "晋城": ["城区", "沁水县", "阳城县", "陵川县", "泽州县", "高平市"],
    "临汾": ["尧都区", "曲沃县", "翼城县", "襄汾县", "洪洞县", "古县", "安泽县", "浮山县", "吉县", "乡宁县", "大宁县", "隰县", "永和县", "蒲县", "汾西县", "侯马市", "霍州市"],
    "运城": ["盐湖区", "临猗县", "万荣县", "闻喜县", "稷山县", "新绛县", "绛县", "垣曲县", "夏县", "平陆县", "芮城县", "永济市", "河津市"]
  },
  "内蒙古": {
   
   
    "呼和浩特": ["回民区", "新城区", "玉泉区", "赛罕区", "土默特左旗", "托克托县", "和林格尔县", "武川县", "清水河县"],
    "包头": ["昆都仑区", "东河区", "青山区", "石拐区", "九原区", "白云鄂博矿区", "土默特右旗", "固阳县", "达尔罕茂明安联合旗"],
    "乌海": ["海勃湾区", "海南区", "乌达区"],
    "赤峰": ["红山区", "元宝山区", "松山区", "阿鲁科尔沁旗", "巴林左旗", "巴林右旗", "林西县", "克什克腾旗", "翁牛特旗", "喀喇沁旗", "宁城县", "敖汉旗"],
    "通辽": ["科尔沁区", "霍林郭勒市", "科尔沁左翼中旗", "科尔沁左翼后旗", "开鲁县", "库伦旗", "奈曼旗", "扎鲁特旗"],
    "鄂尔多斯": ["康巴什区", "东胜区", "准格尔旗", "达拉特旗", "鄂托克前旗", "鄂托克旗", "杭锦旗", "乌审旗", "伊金霍洛旗"],
    "呼伦贝尔": ["海拉尔区", "扎赉诺尔区", "满洲里市", "牙克石市", "扎兰屯市", "额尔古纳市", "根河市", "阿荣旗", "鄂伦春自治旗", "莫力达瓦达斡尔族自治旗", "鄂温克族自治旗", "陈巴尔虎旗", "新巴尔虎左旗", "新巴尔虎右旗"],
    "巴彦淖尔": ["临河区", "五原县", "磴口县", "乌拉特前旗", "乌拉特中旗", "乌拉特后旗", "杭锦后旗"],
    "乌兰察布": ["集宁区", "丰镇市", "卓资县", "化德县", "商都县", "兴和县", "凉城县", "察哈尔右翼前旗", "察哈尔右翼中旗", "察哈尔右翼后旗", "四子王旗"],
    "兴安盟": ["乌兰浩特市", "阿尔山市", "科尔沁右翼前旗", "科尔沁右翼中旗", "扎赉特旗", "突泉县"],
    "锡林郭勒": ["锡林浩特市", "二连浩特市", "阿巴嘎旗", "苏尼特左旗", "苏尼特右旗", "东乌珠穆沁旗", "西乌珠穆沁旗", "太仆寺旗", "镶黄旗", "正镶白旗", "正蓝旗", "多伦县"],
    "阿拉善盟": ["阿拉善左旗", "阿拉善右旗", "额济纳旗"]
  },
  "辽宁": {
   
   
    "沈阳": ["和平区", "沈河区", "大东区", "皇姑区", "铁西区", "苏家屯区", "浑南区", "沈北新区", "于洪区", "辽中区", "新民市", "康平县", "法库县"],
    "大连": ["中山区", "西岗区", "沙河口区", "甘井子区", "旅顺口区", "金州区", "普兰店区", "瓦房店市", "庄河市", "长海县"],
    "鞍山": ["铁东区", "铁西区", "立山区", "千山区", "海城市", "台安县", "岫岩满族自治县"],
    "抚顺": ["新抚区", "顺城区", "望花区", "东洲区", "抚顺县", "新宾满族自治县", "清原满族自治县"],
    "本溪": ["平山区", "溪湖区", "明山区", "南芬区", "本溪满族自治县", "桓仁满族自治县"],
    "丹东": ["元宝区", "振兴区", "振安区", "东港市", "凤城市", "宽甸满族自治县"],
    "锦州": ["古塔区", "凌河区", "太和区", "凌海市", "北镇市", "黑山县", "义县"],
    "营口": ["站前区", "西市区", "鲅鱼圈区", "老边区", "盖州市", "大石桥市"],
    "阜新": ["海州区", "新邱区", "太平区", "清河门区", "细河区", "阜新蒙古族自治县", "彰武县"],
    "辽阳": ["白塔区", "文圣区", "宏伟区", "弓长岭区", "太子河区", "灯塔市", "辽阳县"],
    "盘锦": ["双台子区", "兴隆台区", "大洼区", "盘山县"],
    "铁岭": ["银州区", "清河区", "调兵山市", "开原市", "铁岭县", "昌图县", "西丰县"],
    "朝阳": ["双塔区", "龙城区", "北票市", "凌源市", "朝阳县", "建平县", "喀喇沁左翼蒙古族自治县"],
    "葫芦岛": ["连山区", "龙港区", "南票区", "兴城市", "绥中县", "建昌县"]
  },
  "吉林": {
   
   
    "长春": ["南关区", "朝阳区", "绿园区", "二道区", "双阳区", "宽城区", "九台区", "榆树市", "德惠市", "农安县"],
    "吉林": ["船营区", "龙潭区", "昌邑区", "丰满区", "磐石市", "桦甸市", "蛟河市", "舒兰市", "永吉县"],
    "四平": ["铁西区", "铁东区", "双辽市", "梨树县", "伊通满族自治县"],
    "公主岭": [],
    "辽源": ["龙山区", "西安区", "东丰县", "东辽县"],
    "通化": ["东昌区", "二道江区", "集安市", "通化县", "辉南县", "柳河县", "梅河口市"],
    "白山": ["浑江区", "江源区", "临江市", "抚松县", "靖宇县", "长白朝鲜族自治县"],
    "白城": ["洮北区", "洮南市", "大安市", "镇赉县", "通榆县"],
    "松原": ["宁江区", "扶余市", "乾安县", "长岭县", "前郭尔罗斯蒙古族自治县"],
    "延边": ["延吉市", "图们市", "敦化市", "和龙市", "珲春市", "龙井市", "汪清县", "安图县"]
  },
  "黑龙江": {
   
   
    "哈尔滨": ["道里区", "南岗区", "道外区", "平房区", "松北区", "香坊区", "呼兰区", "阿城区", "双城区", "依兰县", "方正县", "宾县", "巴彦县", "木兰县", "通河县", "延寿县", "尚志市", "五常市"],
    "齐齐哈尔": ["龙沙区", "建华区", "铁锋区", "昂昂溪区", "富拉尔基区", "碾子山区", "梅里斯达斡尔族区", "讷河市", "龙江县", "依安县", "泰来县", "甘南县", "富裕县", "克山县", "克东县", 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值