资讯专栏INFORMATION COLUMN

python编程之制作省市县名称字典

darry / 3041人阅读

摘要:准备字典文件为了更加准确的将失踪地址中的省市县三级单位提取出来,最好能够直接以省市县区的名称为字典,这样通过分词以上的词都能准确的切分出来。在网上搜索发现,根据最新的国家统计区位码之作的现成的字典文件,并没有。

在失踪儿童信息保存在本地之后,有一个字段是失踪地点,字段内容通常比较详细,具体到了失踪的街道或者村,我打算通过某种方法将失踪地点中的省、市、县/区三级地址提取出来。

确定分词技术

知道要干什么之后,那就将这个“某种方法”确定下来,根据以往的知识积累,利用分词的原理来做,可能会更简单。这次就不用php来写了,换成python,在我的电脑上已经安装了python的开发环境,在python下使用的分词组件,搜索了一下,jieba用的比较多,而且调用也非常的容易。

准备字典文件

为了更加准确的将失踪地址中的省、市、县三级单位提取出来,最好能够直接以省、市、县、区的名称为字典,这样通过分词99%以上的词都能准确的切分出来。
在网上搜索发现,根据最新的国家统计区位码之作的现成的字典文件,并没有。但是有同学之前开发过爬虫将这些区位关系存在了mysql数据库,并且在网上有他放出来的sql备份文件,下载下来恢复到数据库中即可。
这个文件包含70多万行数据,在导入数据库的过程大约花了十来分钟。数据表如下:

因此,还需要将数据表中province_name,city_name,county_name提取出来即可,逐行存入文件就成为可以使用的字典文件。

import pymysql

class AnManMysql:
    phost = "127.0.0.1"
    pyuer = "root"
    password = "123456"
    database = "anman_org"
    def pyMyConnection(phost,pyuser,password,database):
        db = pymysql.connect(phost,pyuser,password,database,charset="utf8")
        # cursor = db.cursor()
        return db

    # 导出省市县镇村字典
    def getDict(db):
        cursor = db.cursor()
        cursor.execute("select distinct province_name from j_position")
        data = cursor.fetchall()
        # 打开字典文件my.dict
        fo = open("my.dict","w+")
        for da in data:
            print(da[0])
            fo.seek(0,2)
            fo.write(da[0]+"
")
        print(len(data))
        cursor.execute("select distinct city_name from j_position")
        data = cursor.fetchall()
        for da in data:
            print(da[0])
            fo.seek(0, 2)
            fo.write(da[0] + "
")
        print(len(data))
        cursor.execute("select distinct county_name from j_position")
        data = cursor.fetchall()
        for da in data:
            print(da[0])
            fo.seek(0, 2)
            fo.write(da[0] + "
")
        print(len(data))
        cursor.execute("select distinct town_name from j_position")
        data = cursor.fetchall()
        for da in data:
            print(da[0])
            fo.seek(0, 2)
            fo.write(da[0] + "
")
        print(len(data))
        # cursor.execute("select distinct village_name,village_id from j_position")
        # data = cursor.fetchall()
        # for da in data:
        #     print(da[0])
        #     print(da[1])
        #     fo.seek(0, 2)
        #     fo.write(da[0] + "
")
        # print(len(data))
        fo.close()

在python里新建一个类,增加一个方法,打开一个字典文件,逐个从数据库中distinct字段,然后逐行追加到字典文件中。

cursor = AnManMysql.pyMyConnection(AnManMysql.phost,AnManMysql.pyuer,AnManMysql.password,AnManMysql.database)
AnManMysql.getDict(cursor)
最后再来看看得到的字典文件

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41623.html

相关文章

  • 【echarts地图制作】下钻到乡镇/街道级别的

    摘要:需求展示西安市各区县的地图,点击各区县下钻到各乡镇街道,只能内网环境使用,不可用通过百度高德地图来实现。利用展示自定义的地图关于具体如何导入格式数据到的方法,可以参考官方示例。 需求 展示西安市各区县的地图,点击各区县下钻到各乡镇/街道,只能内网环境使用,不可用通过百度/高德地图来实现。 解决 利用地图数据生成区域的geojson 网络上大部分地图数据只是到省市,最多到区县,再往下的数...

    宠来也 评论0 收藏0
  • EXTJS-6.2.0示例-全国省市三级联动(传统组件方式)

    摘要:实现全国城市三级联动传统模式,监听下拉选择框的事件实现全国城市三级联动传统方式省份请选择城市请选择区县请选择三级联动用到的全国城市数据 extjs 6.2.0 实现全国城市三级联动 传统模式,监听下拉选择框的change事件实现 全国城市三级联动-传统方式 function ge...

    greatwhole 评论0 收藏0
  • jquery移动端省市(区)三级联动插件

    摘要:写省市区三级联动插件的关键是在于你如何编写自己的省市县区文件,你要是把数据格式写对了,可以很轻松的写一省市区插件出来。 最近刚做完一个版本的项目,闲暇时间,就索性把项目中需要用到的插件都自己写了一个,毕竟自己动手丰衣足食才是最重要,自己写的,可以应对各种项目需求,今天又把手机端的省市区三级联动选择功能编写了一个插件出来,代码很简单,样式也是应用的跟日期时间选择插件的一样。写省市区三级联...

    Rocko 评论0 收藏0
  • jquery移动端省市(区)三级联动插件

    摘要:写省市区三级联动插件的关键是在于你如何编写自己的省市县区文件,你要是把数据格式写对了,可以很轻松的写一省市区插件出来。 最近刚做完一个版本的项目,闲暇时间,就索性把项目中需要用到的插件都自己写了一个,毕竟自己动手丰衣足食才是最重要,自己写的,可以应对各种项目需求,今天又把手机端的省市区三级联动选择功能编写了一个插件出来,代码很简单,样式也是应用的跟日期时间选择插件的一样。写省市区三级联...

    spacewander 评论0 收藏0

发表评论

0条评论

darry

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<