【Python】中國有哪些同名的省市縣?

Yanqiang發表於2021-01-24

這道題適合寫個指令碼來解。
首先從百度地圖API下載一份行政區劃資料。
開發資源 | 百度地圖API SDK

然後做一個簡單的資料統計就可以啦~

行政區劃同一級同名的:

import pandas as pd

df = pd.read_csv("行政區劃鄉鎮清單202003.csv")

dic = {}
prov = list(df['NAME_PROV'])
city = list(df['NAME_CITY'])
coun = list(df['NAME_COUN'])

for i in range(len(coun)):
    if coun[i] not in dic:
        dic[coun[i]] = set()
    dic[coun[i]].add(city[i])

new_dic = {}
for k,v in dic.items():
    if len(v) > 1 and not (len(k) < 3 and k.endswith('區')):
        new_dic[k] = v

lst = sorted(new_dic.items(), key=lambda d: len(d[1]), reverse=True)
for line in lst:
    print(line)

結果如下:

('市中區', {'樂山市', '內江市', '濟南市', '棗莊市'})
('鼓樓區', {'福州市', '開封市', '徐州市', '南京市'})
('新華區', {'平頂山市', '滄州市', '石家莊市'})
('橋西區', {'邢臺市', '石家莊市', '張家口市'})
('鐵西區', {'瀋陽市', '鞍山市', '四平市'})
('和平區', {'瀋陽市', '臺中市', '天津市'})
('大安區', {'自貢市', '臺北市', '臺中市'})
('太平區', {'阜新市', '臺中市'})
('鐵東區', {'鞍山市', '四平市'})
('中山區', {'臺北市', '大連市'})
('新城區', {'西安市', '呼和浩特市'})
('河東區', {'臨沂市', '天津市'})
('朝陽區', {'北京市', '長春市'})
('西安區', {'牡丹江市', '遼源市'})
('城關區', {'蘭州市', '拉薩市'})
('安定區', {'臺南市', '定西市'})
('南山區', {'深圳市', '鶴崗市'})
('龍華區', {'深圳市', '海口市'})
('城中區', {'柳州市', '西寧市'})
('大同區', {'臺北市', '大慶市'})
('泰山區', {'新北市', '泰安市'})
('新興區', {'七臺河市', '高雄市'})
('中西區', {'香港', '臺南市'})
('新市區', {'烏魯木齊市', '臺南市'})
('東山區', {'臺南市', '鶴崗市'})
('青山區', {'包頭市', '武漢市'})
('永定區', {'張家界市', '龍巖市'})
('江北區', {'寧波市', '重慶市'})
('海州區', {'連雲港市', '阜新市'})
('通州區', {'北京市', '南通市'})
('西湖區', {'南昌市', '杭州市'})
('長安區', {'西安市', '石家莊市'})
('金山區', {'新北市', '上海市'})
('普陀區', {'舟山市', '上海市'})
('松山區', {'赤峰市', '臺北市'})
('寶山區', {'雙鴨山市', '上海市'})
('向陽區', {'佳木斯市', '鶴崗市'})
('白雲區', {'廣州市', '貴陽市'})
('橋東區', {'邢臺市', '張家口市'})

全部同名的:

import pandas as pd

df = pd.read_csv("行政區劃鄉鎮清單202003.csv")

dic = {}
prov = list(df['NAME_PROV'])
city = list(df['NAME_CITY'])
coun = list(df['NAME_COUN'])

prov_names, city_names, coun_names = [], [], []
for i in range(len(prov)):
    prov_names.append(prov[i])
    if prov[i] != city[i]:
        city_names.append(prov[i]+city[i])
    else:
        city_names.append(prov[i])
        
    if city[i] != coun[i]:
        coun_names.append(city_names[i]+coun[i])
    else:
        coun_names.append(city_names[i])
    
minzu = "蒙古族、藏族、苗族、壯族、回族、維吾爾族、彝族、布依族、朝鮮族、侗族、白族、 \
        哈尼族、傣族、傈僳族、畲族、拉祜族、滿族、瑤族、土家族、哈薩克族、黎族、佤族、\
        高山族、水族、東鄉族、景頗族、土族、仫佬族、布朗族、毛南族、錫伯族、普米族、\
        納西族、柯爾克孜族、達斡爾族、羌族、撒拉族、仡佬族、阿昌族、塔吉克族、怒族、\
        俄羅斯族、德昂族、裕固族、塔塔爾族、鄂倫春族、門巴族、基諾族、烏孜別克族、\
        鄂溫克族、保安族、京族、獨龍族、赫哲族、珞巴族、漢族"
minzu_lst = minzu.split("、")
minzu_lst = [name.strip() for name in minzu_lst]

stop_words_prov = ['省', '市', '維吾爾自治區', '壯族自治區', '回族自治區', '自治區']
stop_words_prov = sorted(stop_words_prov, key=lambda d:len(d), reverse=True)

stop_words_city = ['縣', '市', '盟', '地區', '林區', '自治縣', '自治州']
stop_words_city = sorted(stop_words_city, key=lambda d:len(d), reverse=True)

stop_words_coun = ['旗', '縣', '市', '鄉', '鎮', '區', '群島', '自治縣',  \
                '中旗', '右旗', '後旗', '前旗', '左旗', '自治旗', '聯合旗', \
                '右翼中旗', '左翼中旗', '右翼前旗', '左翼前旗', '右翼後旗', '左翼後旗']
stop_words_coun = sorted(stop_words_coun, key=lambda d:len(d), reverse=True)

def remove_suffix(name, suffix):
    if name.endswith(suffix):
        return name[:-len(suffix)]
    return name
    
def remove_stop_word_suffix(name, stop_words):
    short_name = name
    for word in stop_words:
        if name.endswith(word):
            short_name = remove_suffix(name, word)
            break
    return short_name
    
def remove_minzu_suffix(name, minzu_lst):
    short_name = name
    if len(minzu_lst) == 0:
        return short_name
    
    flag = True
    while flag:
        flag = False
        for word in minzu_lst:
            if short_name.endswith(word):
                short_name = remove_suffix(short_name, word)
                flag = True
                break
            if len(word) > 2 and short_name.endswith(word[:-1]):
                short_name = remove_suffix(short_name, word[:-1])
                flag = True
                break
    return short_name          
    
def add_data(dic, name_lst, long_name_lst, stop_words, minzu_lst):
    assert len(name_lst) == len(long_name_lst)
    for i in range(len(name_lst)):
        name = name_lst[i]
        long_name = long_name_lst[i]
        if len(name) < 3 and name.endswith('區'):
            continue
            
        short_name = remove_stop_word_suffix(name, stop_words)
        short_name = remove_minzu_suffix(short_name, minzu_lst)
                    
        if short_name not in dic:
            dic[short_name] = set()
        dic[short_name].add(long_name)

add_data(dic, prov, prov_names, stop_words_prov, [])
add_data(dic, city, city_names, stop_words_city, minzu_lst)

new_coun = []
for name in coun:
    new_name = remove_suffix(name, '直轄')
    new_coun.append(new_name)
    
new_coun_names = []
for name in coun_names:
    new_name = remove_suffix(name, '直轄')
    new_coun_names.append(new_name)

add_data(dic, new_coun, new_coun_names, stop_words_coun, minzu_lst)

new_dic = {}
for k,v in dic.items():
    if len(v) > 1 and k != '':
        new_dic[k] = v

lst = sorted(new_dic.items(), key=lambda d: len(d[1]), reverse=True)
for line in lst:
    print(line)

結果如下:

('科爾沁', {'內蒙古自治區興安盟科爾沁右翼前旗', '內蒙古自治區通遼市科爾沁區', '內蒙古自治區通遼市科爾沁左翼後旗', '內蒙古自治區興安盟科爾沁右翼中旗', '內蒙古自治區通遼市科爾沁左翼中旗'})
('朝陽', {'遼寧省朝陽市朝陽縣', '遼寧省朝陽市', '北京市朝陽區', '吉林省長春市朝陽區'})
('市中', {'四川省內江市市中區', '山東省棗莊市市中區', '四川省樂山市市中區', '山東省濟南市市中區'})
('和平', {'遼寧省瀋陽市和平區', '廣東省河源市和平縣', '臺灣省臺中市和平區', '天津市和平區'})
('大安', {'臺灣省臺中市大安區', '臺灣省臺北市大安區', '吉林省白城市大安市', '四川省自貢市大安區'})
('鼓樓', {'江蘇省南京市鼓樓區', '河南省開封市鼓樓區', '江蘇省徐州市鼓樓區', '福建省福州市鼓樓區'})
('海南', {'海南省', '青海省海南藏族自治州', '內蒙古自治區烏海市海南區'})
('阿拉善', {'內蒙古自治區阿拉善盟', '內蒙古自治區阿拉善盟阿拉善左旗', '內蒙古自治區阿拉善盟阿拉善右旗'})
('和田', {'新疆維吾爾自治區和田地區和田市', '新疆維吾爾自治區和田地區', '新疆維吾爾自治區和田地區和田縣'})
('中山', {'遼寧省大連市中山區', '臺灣省臺北市中山區', '廣東省中山市'})
('西安', {'黑龍江省牡丹江市西安區', '吉林省遼源市西安區', '陝西省西安市'})
('文山', {'雲南省文山壯族苗族自治州', '臺灣省臺北市文山區', '雲南省文山壯族苗族自治州文山市'})
('大同', {'黑龍江省大慶市大同區', '山西省大同市', '臺灣省臺北市大同區'})
('興安', {'黑龍江省鶴崗市興安區', '廣西壯族自治區桂林市興安縣', '內蒙古自治區興安盟'})
('臨夏', {'甘肅省臨夏回族自治州臨夏市', '甘肅省臨夏回族自治州', '甘肅省臨夏回族自治州臨夏縣'})
('新華', {'河北省滄州市新華區', '河北省石家莊市新華區', '河南省平頂山市新華區'})
('橋西', {'河北省張家口市橋西區', '河北省石家莊市橋西區', '河北省邢臺市橋西區'})
('鐵西', {'吉林省四平市鐵西區', '遼寧省鞍山市鐵西區', '遼寧省瀋陽市鐵西區'})
('烏拉特', {'內蒙古自治區巴彥淖爾市烏拉特後旗', '內蒙古自治區巴彥淖爾市烏拉特前旗', '內蒙古自治區巴彥淖爾市烏拉特中旗'})
('新興', {'廣東省雲浮市新興縣', '黑龍江省七臺河市新興區', '臺灣省高雄市新興區'})
('東山', {'福建省漳州市東山縣', '黑龍江省鶴崗市東山區', '臺灣省臺南市東山區'})
('察哈爾', {'內蒙古自治區烏蘭察布市察哈爾右翼前旗', '內蒙古自治區烏蘭察布市察哈爾右翼後旗', '內蒙古自治區烏蘭察布市察哈爾右翼中旗'})
('河北', {'河北省', '天津市河北區'})
('吉林', {'吉林省', '吉林省吉林市'})
('河南', {'河南省', '青海省黃南藏族自治州河南蒙古族自治縣'})
('本溪', {'遼寧省本溪市本溪滿族自治縣', '遼寧省本溪市'})
('撫順', {'遼寧省撫順市', '遼寧省撫順市撫順縣'})
('阜新', {'遼寧省阜新市', '遼寧省阜新市阜新蒙古族自治縣'})
('鐵嶺', {'遼寧省鐵嶺市鐵嶺縣', '遼寧省鐵嶺市'})
('遼陽', {'遼寧省遼陽市', '遼寧省遼陽市遼陽縣'})
('昌吉', {'新疆維吾爾自治區昌吉回族自治州', '新疆維吾爾自治區昌吉回族自治州昌吉市'})
('喀什', {'新疆維吾爾自治區喀什地區喀什市', '新疆維吾爾自治區喀什地區'})
('塔城', {'新疆維吾爾自治區塔城地區', '新疆維吾爾自治區塔城地區塔城市'})
('阿勒泰', {'新疆維吾爾自治區阿勒泰地區', '新疆維吾爾自治區阿勒泰地區阿勒泰市'})
('通化', {'吉林省通化市通化縣', '吉林省通化市'})
('甘南', {'黑龍江省齊齊哈爾市甘南縣', '甘肅省甘南藏族自治州'})
('白銀', {'甘肅省白銀市', '甘肅省白銀市白銀區'})
('玉樹', {'青海省玉樹藏族自治州玉樹市', '青海省玉樹藏族自治州'})
('大理', {'雲南省大理白族自治州', '雲南省大理白族自治州大理市'})
('新鄉', {'河南省新鄉市新鄉縣', '河南省新鄉市'})
('安陽', {'河南省安陽市', '河南省安陽市安陽縣'})
('湘潭', {'湖南省湘潭市湘潭縣', '湖南省湘潭市'})
('長沙', {'湖南省長沙市長沙縣', '湖南省長沙市'})
('岳陽', {'湖南省岳陽市', '湖南省岳陽市岳陽縣'})
('衡陽', {'湖南省衡陽市衡陽縣', '湖南省衡陽市'})
('嘉義', {'臺灣省嘉義市', '臺灣省嘉義縣'})
('桃園', {'臺灣省桃園市', '臺灣省桃園市桃園區'})
('新北', {'江蘇省常州市新北區', '臺灣省新北市'})
('新竹', {'臺灣省新竹縣', '臺灣省新竹市'})
('淮安', {'江蘇省淮安市', '江蘇省淮安市淮安區'})
('邵陽', {'湖南省邵陽市', '湖南省邵陽市邵陽縣'})
('濮陽', {'河南省濮陽市', '河南省濮陽市濮陽縣'})
('昌江', {'江西省景德鎮市昌江區', '海南省昌江黎族自治縣'})
('南昌', {'江西省南昌市南昌縣', '江西省南昌市'})
('阿克蘇', {'新疆維吾爾自治區阿克蘇地區阿克蘇市', '新疆維吾爾自治區阿克蘇地區'})
('北屯', {'臺灣省臺中市北屯區', '新疆維吾爾自治區北屯市'})
('阿壩', {'四川省阿壩藏族羌族自治州阿壩縣', '四川省阿壩藏族羌族自治州'})
('甘孜', {'四川省甘孜藏族自治州', '四川省甘孜藏族自治州甘孜縣'})
('恩施', {'湖北省恩施土家族苗族自治州', '湖北省恩施土家族苗族自治州恩施市'})
('荊州', {'湖北省荊州市', '湖北省荊州市荊州區'})
('吉安', {'江西省吉安市吉安縣', '江西省吉安市'})
('廣安', {'四川省廣安市廣安區', '四川省廣安市'})
('資陽', {'湖南省益陽市資陽區', '四川省資陽市'})
('烏魯木齊', {'新疆維吾爾自治區烏魯木齊市', '新疆維吾爾自治區烏魯木齊市烏魯木齊縣'})
('克拉瑪依', {'新疆維吾爾自治區克拉瑪依市克拉瑪依區', '新疆維吾爾自治區克拉瑪依市'})
('黃山', {'安徽省黃山市', '安徽省黃山市黃山區'})
('蕪湖', {'安徽省蕪湖市', '安徽省蕪湖市蕪湖縣'})
('邢臺', {'河北省邢臺市邢臺縣', '河北省邢臺市'})
('承德', {'河北省承德市', '河北省承德市承德縣'})
('楚雄', {'雲南省楚雄彝族自治州', '雲南省楚雄彝族自治州楚雄市'})
('紅河', {'雲南省紅河哈尼族彝族自治州紅河縣', '雲南省紅河哈尼族彝族自治州'})
('東營', {'山東省東營市東營區', '山東省東營市'})
('連山', {'廣東省清遠市連山壯族瑤族自治縣', '遼寧省葫蘆島市連山區'})
('平山', {'河北省石家莊市平山縣', '遼寧省本溪市平山區'})
('東港', {'山東省日照市東港區', '遼寧省丹東市東港市'})
('太平', {'臺灣省臺中市太平區', '遼寧省阜新市太平區'})
('龍港', {'遼寧省葫蘆島市龍港區', '浙江省溫州市龍港市'})
('太和', {'遼寧省錦州市太和區', '安徽省阜陽市太和縣'})
('清河', {'河北省邢臺市清河縣', '遼寧省鐵嶺市清河區'})
('海城', {'遼寧省鞍山市海城市', '廣西壯族自治區北海市海城區'})
('鐵東', {'吉林省四平市鐵東區', '遼寧省鞍山市鐵東區'})
('新城', {'陝西省西安市新城區', '內蒙古自治區呼和浩特市新城區'})
('土默特', {'內蒙古自治區包頭市土默特右旗', '內蒙古自治區呼和浩特市土默特左旗'})
('杭錦', {'內蒙古自治區鄂爾多斯市杭錦旗', '內蒙古自治區巴彥淖爾市杭錦後旗'})
('蘇尼特', {'內蒙古自治區錫林郭勒盟蘇尼特左旗', '內蒙古自治區錫林郭勒盟蘇尼特右旗'})
('河東', {'山東省臨沂市河東區', '天津市河東區'})
('梨樹', {'黑龍江省雞西市梨樹區', '吉林省四平市梨樹縣'})
('龍山', {'吉林省遼源市龍山區', '湖南省湘西土家族苗族自治州龍山縣'})
('龍潭', {'吉林省吉林市龍潭區', '臺灣省桃園市龍潭鄉'})
('昌邑', {'吉林省吉林市昌邑區', '山東省濰坊市昌邑市'})
('寬城', {'吉林省長春市寬城區', '河北省承德市寬城滿族自治縣'})
('清水', {'甘肅省天水市清水縣', '臺灣省臺中市清水區'})
('金川', {'甘肅省金昌市金川區', '四川省阿壩藏族羌族自治州金川縣'})
('安寧', {'甘肅省蘭州市安寧區', '雲南省昆明市安寧市'})
('城關', {'西藏自治區拉薩市城關區', '甘肅省蘭州市城關區'})
('安定', {'甘肅省定西市安定區', '臺灣省臺南市安定區'})
('鐘山', {'貴州省六盤水市鐘山區', '廣西壯族自治區賀州市鐘山縣'})
('江城', {'廣東省陽江市江城區', '雲南省普洱市江城哈尼族彝族自治縣'})
('開平', {'河北省唐山市開平區', '廣東省江門市開平市'})
('鶴山', {'河南省鶴壁市鶴山區', '廣東省江門市鶴山市'})
('南山', {'黑龍江省鶴崗市南山區', '廣東省深圳市南山區'})
('龍華', {'廣東省深圳市龍華區', '海南省海口市龍華區'})
('城中', {'廣西壯族自治區柳州市城中區', '青海省西寧市城中區'})
('南沙', {'廣東省廣州市南沙區', '海南省三沙市南沙群島'})
('大通', {'安徽省淮南市大通區', '青海省西寧市大通回族土族自治縣'})
('山陽', {'河南省焦作市山陽區', '陝西省商洛市山陽縣'})
('復興', {'河北省邯鄲市復興區', '臺灣省桃園市復興鄉'})
('永和', {'臺灣省新北市永和區', '山西省臨汾市永和縣'})
('泰山', {'山東省泰安市泰山區', '臺灣省新北市泰山區'})
('桃源', {'臺灣省高雄市桃源區', '湖南省常德市桃源縣'})
('鳳山', {'臺灣省高雄市鳳山區', '廣西壯族自治區河池市鳳山縣'})
('中西', {'臺灣省臺南市中西區', '香港中西區'})
('永康', {'臺灣省臺南市永康區', '浙江省金華市永康市'})
('新化', {'湖南省婁底市新化縣', '臺灣省臺南市新化區'})
('新市', {'新疆維吾爾自治區烏魯木齊市新市區', '臺灣省臺南市新市區'})
('白河', {'陝西省安康市白河縣', '臺灣省臺南市白河區'})
('石門', {'湖南省常德市石門縣', '臺灣省新北市石門區'})
('東安', {'黑龍江省牡丹江市東安區', '湖南省永州市東安縣'})
('青山', {'湖北省武漢市青山區', '內蒙古自治區包頭市青山區'})
('永定', {'福建省龍巖市永定區', '湖南省張家界市永定區'})
('象山', {'廣西壯族自治區桂林市象山區', '浙江省寧波市象山縣'})
('江北', {'重慶市江北區', '浙江省寧波市江北區'})
('雲龍', {'江蘇省徐州市雲龍區', '雲南省大理白族自治州雲龍縣'})
('海州', {'遼寧省阜新市海州區', '江蘇省連雲港市海州區'})
('棲霞', {'江蘇省南京市棲霞區', '山東省煙臺市棲霞市'})
('通州', {'江蘇省南通市通州區', '北京市通州區'})
('西湖', {'浙江省杭州市西湖區', '江西省南昌市西湖區'})
('華容', {'湖南省岳陽市華容縣', '湖北省鄂州市華容區'})
('襄城', {'河南省許昌市襄城縣', '湖北省襄陽市襄城區'})
('巴林', {'內蒙古自治區赤峰市巴林左旗', '內蒙古自治區赤峰市巴林右旗'})
('鄂托克', {'內蒙古自治區鄂爾多斯市鄂托克旗', '內蒙古自治區鄂爾多斯市鄂托克前旗'})
('新巴爾虎', {'內蒙古自治區呼倫貝爾市新巴爾虎右旗', '內蒙古自治區呼倫貝爾市新巴爾虎左旗'})
('長安', {'河北省石家莊市長安區', '陝西省西安市長安區'})
('興山', {'黑龍江省鶴崗市興山區', '湖北省宜昌市興山縣'})
('林口', {'臺灣省新北市林口區', '黑龍江省牡丹江市林口縣'})
('龍井', {'臺灣省臺中市龍井區', '吉林省延邊朝鮮族自治州龍井市'})
('金山', {'臺灣省新北市金山區', '上海市金山區'})
('永安', {'臺灣省高雄市永安區', '福建省三明市永安市'})
('安平', {'臺灣省臺南市安平區', '河北省衡水市安平縣'})
('普陀', {'浙江省舟山市普陀區', '上海市普陀區'})
('沙灣', {'四川省樂山市沙灣區', '新疆維吾爾自治區塔城地區沙灣縣'})
('東興', {'廣西壯族自治區防城港市東興市', '四川省內江市東興區'})
('長寧', {'四川省宜賓市長寧縣', '上海市長寧區'})
('伊寧', {'新疆維吾爾自治區伊犁哈薩克自治州伊寧市', '新疆維吾爾自治區伊犁哈薩克自治州伊寧縣'})
('臺江', {'福建省福州市臺江區', '貴州省黔東南苗族侗族自治州臺江縣'})
('松山', {'內蒙古自治區赤峰市松山區', '臺灣省臺北市松山區'})
('興寧', {'廣東省梅州市興寧市', '廣西壯族自治區南寧市興寧區'})
('寶山', {'黑龍江省雙鴨山市寶山區', '上海市寶山區'})
('向陽', {'黑龍江省鶴崗市向陽區', '黑龍江省佳木斯市向陽區'})
('白雲', {'貴州省貴陽市白雲區', '廣東省廣州市白雲區'})
('橋東', {'河北省張家口市橋東區', '河北省邢臺市橋東區'})
('大埔', {'香港大埔區', '廣東省梅州市大埔縣'})
('五華', {'廣東省梅州市五華縣', '雲南省昆明市五華區'})
('金平', {'雲南省紅河哈尼族彝族自治州金平苗族瑤族傣族自治縣', '廣東省汕頭市金平區'})
('河口', {'雲南省紅河哈尼族彝族自治州河口瑤族自治縣', '山東省東營市河口區'})

相關文章