import json def read(file: "str") -> "dict": with open(file, "r", encoding="utf-8") as fp: data = json.load(fp) fp.close() return data def save(file: "str", data): with open(file, "w", encoding="utf-8") as fp: json.dump(data, fp, ensure_ascii=False, indent=2) fp.close() def trip_name(name: "str") -> "tuple[bool, str]": if name.endswith("村村民委员会"): return True, name[:-5] elif name.endswith("村民委员会"): return True, name[:-4] elif name.endswith("居民委员会"): return True, name[:-5] elif name.endswith("村村民委会"): return True, name[:-4] elif name.endswith("村民委会"): return True, name[:-3] elif name.endswith("村村委会"): return True, name[:-3] elif name.endswith("村委会"): return True, name[:-2] elif name.endswith("居委会"): return True, name[:-3] elif name.endswith("居民委"): return True, name[:-3] elif name.endswith("家委会"): return True, name[:-3] elif name.endswith("委员会"): return True, name[:-3] elif name.endswith("村村委"): return True, name[:-2] elif name.endswith("村委"): return True, name[:-1] elif name.endswith("委会"): return True, name[:-2] elif name.endswith("嘎查"): return True, name elif name.endswith("大学"): return True, name elif name.endswith("学院"): return True, name elif name.endswith("公司"): return True, name elif name.endswith("中心"): return True, name elif name.endswith("区"): return True, name elif name.endswith("处"): return True, name elif name.endswith("村"): return True, name elif name.endswith("队"): return True, name return False, name def mFilter(data: "dict"): db_data = { # (id, name, level, child, type) "province": [], "city": [], "county": [], "town": [], "village": [] } urc, total = [], {"province": 0, "city": 0, "county": 0, "town": 0, "village": 0} def do_village_of(tt: "dict"): for vid, village in tt.items(): total["village"] += 1 success, name = trip_name(village["name"]) if not success: urc.append(name) db_village = (vid, name, "5-", None, village["type"]) db_data["village"].append(db_village) for pid, province in data.items(): # 2 print(f"|-province <{province['name']}>") total["province"] += 1 db_province = (pid, province["name"], "1+", "2+", None) db_data["province"].append(db_province) for cid, city in province["children"].items(): # 4 print(f"|---city <{city['name']}>") total["city"] += 1 countyAsChild = True for cot_id, cot in city["children"].items(): # 6, 9 if len(cot_id) == 9: total["town"] += 1 db_town = (cot_id, cot["name"], "4+", "5-", None) db_data["town"].append(db_town) countyAsChild = False do_village_of(cot["children"]) else: total["county"] += 1 db_county = (cot_id, cot["name"], "3+", "4+", None) db_data["county"].append(db_county) for tid, town in cot["children"].items(): total["town"] += 1 db_town = (tid, town["name"], "4+", "5-", None) db_data["town"].append(db_town) do_village_of(town["children"]) if countyAsChild: db_city = (cid, city["name"], "2+", "3+", None) else: db_city = (cid, city["name"], "2+", "4+", None) db_data["city"].append(db_city) print(urc) save("db_data.json", db_data) save("total.json", total) def main(): file_f, file_t = "all-1.json", "filter.json" raw = read(file_f) mFilter(raw) if __name__ == '__main__': main()