city_name_to_id_2.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import json
  2. from pathlib import Path
  3. # 直接导出一个全局映射,供其他脚本直接 import
  4. _DEFAULT_PATH = Path(__file__).with_name("city.json")
  5. def build_city_name_to_id():
  6. city_json_path = Path(_DEFAULT_PATH)
  7. raw = city_json_path.read_text(encoding="utf-8")
  8. data_list = json.loads(raw)
  9. new_dict = {}
  10. for data in data_list:
  11. province = data["name"]
  12. province_id = data["id"]
  13. sons = data.get("sons") or []
  14. for son in sons:
  15. city = son.get("name", "")
  16. city_id = son.get("id", "")
  17. new_dict[city] = {"province": province, "province_id": province_id,
  18. "city": city, "city_id": city_id}
  19. return new_dict
  20. def get_city(city_str):
  21. """可以通过市获取省份"""
  22. city_dict = build_city_name_to_id()
  23. province = ""
  24. city = ""
  25. if "北京" in city_str:
  26. city = "北京市"
  27. province = "北京"
  28. if "重庆" in city_str:
  29. city = "重庆市"
  30. province = "重庆"
  31. if "上海" in city_str:
  32. city = "上海市"
  33. province = "上海"
  34. if "天津" in city_str:
  35. city = "天津市"
  36. province = "天津"
  37. if "新疆" in city_str:
  38. province = "新疆维吾尔自治区"
  39. if "宁夏" in city_str:
  40. province = "宁夏回族自治区"
  41. if "内蒙古" in city_str:
  42. province = "内蒙古自治区"
  43. if "西藏" in city_str:
  44. province = "西藏自治区"
  45. if "广西" in city_str:
  46. province = "广西壮族自治区"
  47. city_id = province_id = 0
  48. for _city, _city_value in city_dict.items():
  49. city_name = _city.replace("市", "")
  50. if city_name in city_str:
  51. province = _city_value["province"]
  52. province_id = _city_value["province_id"]
  53. city = _city
  54. city_id = _city_value["city_id"]
  55. break
  56. return city_id, province_id, city, province
  57. if __name__ == "__main__":
  58. city_id, province_id, city, province = get_city("玉林")
  59. print(city_id, province_id, city, province)