import json from pathlib import Path # 直接导出一个全局映射,供其他脚本直接 import _DEFAULT_PATH = Path(__file__).with_name("city.json") def build_city_name_to_id(): city_json_path = Path(_DEFAULT_PATH) raw = city_json_path.read_text(encoding="utf-8") data_list = json.loads(raw) new_dict = {} for data in data_list: province = data["name"] province_id = data["id"] sons = data.get("sons") or [] for son in sons: city = son.get("name", "") city_id = son.get("id", "") new_dict[city] = {"province": province, "province_id": province_id, "city": city, "city_id": city_id} return new_dict def get_city(city_str): """可以通过市获取省份""" city_dict = build_city_name_to_id() province = "" city = "" if "北京" in city_str: city = "北京市" province = "北京" if "重庆" in city_str: city = "重庆市" province = "重庆" if "上海" in city_str: city = "上海市" province = "上海" if "天津" in city_str: city = "天津市" province = "天津" if "新疆" in city_str: province = "新疆维吾尔自治区" if "宁夏" in city_str: province = "宁夏回族自治区" if "内蒙古" in city_str: province = "内蒙古自治区" if "西藏" in city_str: province = "西藏自治区" if "广西" in city_str: province = "广西壮族自治区" city_id = province_id = 0 for _city, _city_value in city_dict.items(): city_name = _city.replace("市", "") if city_name in city_str: province = _city_value["province"] province_id = _city_value["province_id"] city = _city city_id = _city_value["city_id"] break return city_id, province_id, city, province if __name__ == "__main__": city_id, province_id, city, province = get_city("玉林") print(city_id, province_id, city, province)