123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- 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()
|