本机器人主要执行以下任务。

行政区划分类

使用Category.py进行操作,示例代码如下:

python category.py move -from:"泉州" -to:"惠安县行政区划" -match:"惠安县\)""

自动创建乡级行政区

使用pagefromfile.py进行操作,运行环境为Ubuntu Linux+Python。步骤如下:

  1. 手动创建data文件。
  2. 运行township.sh。
  3. 检查生成条目的结果。

wikicounty目录

镇名\t消歧义选项(0为没有消歧义)\t行政区划代码\t行政区划数\t下辖行政村列表\t所属县

其中\t指TAB键

data文件示例

浔中镇	0	350526100	2个[[社区]]、11个[[行政村]]	凤池社区、富东社区、浔中村、乐陶村、后所村、凤洋村、龙翰村、石鼓村、仙境村、祖厝村、石山村、蒲坂村、世科村	德化县
龙浔镇	0	350526101	8个[[社区]]、6个[[行政村]]	浔东社区、德新社区、兴南社区、南门社区、金锁社区、龙鹏社区、湖前社区、园丁社区、宝美村、丁溪村、丁墘村、大坂村、英山村、高阳村	德化县
三班镇	0	350526102	10个[[行政村]]	三班村、泗滨村、东山村、奎斗村、儒坑村、锦山村、龙阙村、桥内村、蔡径村、岭头村	德化县
龙门滩镇	0	350526103	12个[[行政村]]	硕儒村、霞碧村、碧坑村、苏洋村、磻坑村、石室村、湖景村、内洋村、村兜村、朱地村、霞山村、大溪村	德化县
雷峰镇	0	350526104	14个[[行政村]]	朱紫村、蕉溪村、潘祠村、坂仔村、雷峰村、格后村、溪美村、肖坑村、长基村、瑞坂村、李溪村、荐解村、上寨村、双芹村	德化县
南埕镇	0	350526105	12个[[行政村]]		西山村、高漈村、前峰村、半岭村、南埕村、塔兜村、枣坑村、许厝村、望洋村、连山村、蟠龙村、梓垵村	德化县
水口镇 (德化县)	350526106	16个[[行政村]]	亭坑村、丘坂村、凤坪村、上湖村、久住村、祥光村、八逞村、樟境村、村场村、湖坂村、淳湖村、毛厝村、昆坂村、梨坑村、承泽村、榜上村	德化县
赤水镇 (德化县)	350526107	1个[[社区]]、14个[[行政村]]	赤水社区、戴云村、东里村、苏坂村、猛虎村、湖岭村、岭边村、福全村、吉岭村、永嘉村、苏岭村、西洋村、锦洋村、小铭村、铭爱村	德化县
葛坑镇	0	350526109	12个[[行政村]]	葛坑村、下玲村、湖头村、漈头村、邱村村、水门村、大岭村、蓝田村、富地村、大正村、龙漈村、龙塔村	德化县
上涌镇	0	350526108	17个[[行政村]]	上涌村、黄井村、辉阳村、后坂村、后宅村、刘坑村、下涌村、曾坂村、云路村、西溪村、桂格村、传豪村、桂林村、中洋村、下村村、门头村、东山村	德化县
盖德乡	0	350526205	14个[[行政村]]	盖德村、下寮村、有济村、下坑村、福阳村、大墘村、上地村、吾华村、三福村、上坑村、林地村、仙岭村、凤山村、山坪村	德化县
杨梅乡 (德化县)	350526200	7个[[行政村]]	杨梅村、白叶村、西墘村、上云村、云溪村、安村村、和顺村	德化县
汤头乡	0	350526202	7个[[行政村]]	汤头村、草村村、福山村、格中村、岭脚村、汤垵村、吉山村	德化县
桂阳乡	0	350526204	9个[[行政村]]	桂阳村、溪洋村、王春村、安章村、涌溪村、洪田村、彭坑村、梓溪村、陈溪村	德化县
国宝乡	0	350526206	8个[[行政村]]	国宝村、佛岭村、上洋村、南斗村、祥云村、内坂村、厚德村、格头村	德化县
美湖乡	0	350526207	8个[[行政村]]	上岸村、小湖村、美湖村、上漈村、洋坑村、洋田村、斜山村、阳山村	德化县
大铭乡	0	350526208	7个[[行政村]]	大铭村、联春村、金黄村、上徐村、琼英村、琼山村、琼溪村	德化县
春美乡	0	350526209	7个[[行政村]]	古春村、梁春村、上春村、春美村、新阁村、尤床村、双翰村	德化县

generate_township_files.py

# -*- coding: utf-8  -*-
""" Script to create user files (user-config.py, user-fixes.py) """
__version__ = '$Id: generate_user_files.py 6869 2009-05-11 00:35:02Z cosoleto $'

import os, sys, codecs, re

base_dir = ''
console_encoding = sys.stdout.encoding

if console_encoding is None or sys.platform == 'cygwin':
    console_encoding = "iso-8859-1"

def listchoice(clist = [], message = None, default = None):

    if not message:
        message = "Select"

    if default:
        message += " (default: %s)" % default

    message += ": "

    for n, i in enumerate(clist):
        print ("%d: %s" % (n + 1, i))

    while True:
        choice = raw_input(message)

        if choice == '' and default:
            return default

        try:
            return clist[int(choice) - 1]
        except:
            print("Invalid response")
    return response

def file_exists(filename):
    if os.path.exists(filename):
        print("'%s' already exists." % filename)
        return True
    return False

def generate_township():
    _fnc = os.path.join(base_dir, "township")
    if not file_exists(_fnc):
        
        fdata = codecs.open("data", "r", "utf-8")
	row=[]
	for str in fdata.readlines():

	    column=[]
	    line=str.split()
	    for field in line: column.append(field)
	    row.append(column)

	for data in row:
            name=data[0]
            if name.find(u"乡")<>-1: level=u"乡"
            if name.find(u"镇")<>-1: level=u"镇"
            if name.find(u"街道")<>-1: level=u"街道"
            if data[1]<>"0": disam=' '+data[1]
            else: disam=''
            code=data[2]
            post=''
            num_villiage=data[3]
            villiage=data[4]
            county=data[5]

            f = codecs.open(_fnc, "a", "utf-8")
        
            f.write(u"""{{-start-}}
'''%s%s'''
{{中国乡级行政区
| 行政区全称 = %s
| 景观照片文件名 =
| 景观照片描述 =
| 汉语拼音 =
| 通用拼音 =
| 注音符號 =
| 其它标音类型1 =
| 其它标音1 =
| 其它标音类型2 =
| 其它标音2 =
| 其它语言类型1 =
| 其它语言地名1 =
| 其它语言类型2 =
| 其它语言地名2 =
| 上级行政区 = [[福建省]][[泉州市]][[%s]]
| 行政区类别 = [[%s]]
| 行政区划代码 =%s
| 地理坐标 =
| 总面积 =
| 户籍人口 =
| 户籍人口年份 =
| 常住人口 =
| 常住人口年份 =
| 人口密度 =
| 行政区划 =
| 官方网站 =
| 政府驻地 =
| 邮政编码 =%s
| 毗邻行政区 =
| 位置图文件名 =
| 位置图描述 =
}}
'''%s'''是[[中华人民共和国|中国]][[福建省]][[泉州市]][[%s]]下辖的一个[[%s]]。

== 行政区划 ==

%s共辖%s,分别是:

%s

{{%s行政区划}}
{{福建小作品}}

[[Category:%s行政区划]]
{{-stop-}}
""" % (name, disam, name, county, level, code, post, name, county, level, name, num_villiage, villiage, county, county))
            f.close()
        
        fdata.close()
        print("'%s' written." % _fnc)

if __name__ == "__main__":
        generate_township()

pywikipedia目录

township.sh

cd /home/dingar/wikicounty/
python generate_township_files.py
mv township ~/pywikipedia/
cd ~/pywikipedia/
gedit township
python pagefromfile.py -file:township -summary:机器人新建行政区划小作品(试验) -notitle

注意

  • 每创建完一个地级市的乡,都应将“福建省泉州市“替换成相应的地市。
  • 对于xzqh.org的乡村名称,可以使用正则表达式进行替换。我使用Kate
Find: \s?~\d+
Replace: 、