# !/usr/bin/env python

# -*- coding:utf-8 -*-

"""

area参数自助生成

运行脚本,根据提示逐级选择区域即可

"""

import json

import requests

provinces = [

{'name': '北京', 'id': 1}, {'name': '上海', 'id': 2}, {'name': '天津', 'id': 3},

{'name': '重庆', 'id': 4}, {'name': '河北', 'id': 5}, {'name': '山西', 'id': 6},

{'name': '河南', 'id': 7}, {'name': '辽宁', 'id': 8}, {'name': '吉林', 'id': 9},

{'name': '黑龙江', 'id': 10}, {'name': '内蒙古', 'id': 11}, {'name': '江苏', 'id': 12},

{'name': '山东', 'id': 13}, {'name': '安徽', 'id': 14}, {'name': '浙江', 'id': 15},

{'name': '福建', 'id': 16}, {'name': '湖北', 'id': 17}, {'name': '湖南', 'id': 18},

{'name': '广东', 'id': 19}, {'name': '广西', 'id': 20}, {'name': '江西', 'id': 21},

{'name': '四川', 'id': 22}, {'name': '海南', 'id': 23}, {'name': '贵州', 'id': 24},

{'name': '云南', 'id': 25}, {'name': '西藏', 'id': 26}, {'name': '陕西', 'id': 27},

{'name': '甘肃', 'id': 28}, {'name': '青海', 'id': 29}, {'name': '宁夏', 'id': 30},

{'name': '新疆', 'id': 31}, {'name': '台湾', 'id': 32}, {'name': '港澳', 'id': 52993},

{'name': '钓鱼岛', 'id': 84}

]

def get_area_by_id(_id):

base_uri = 'https://d.jd.com/area/get'

payload = {'fid': _id}

resp = requests.get(url=base_uri, params=payload)

return json.loads(resp.text)

def print_area(area_list):

for area in area_list:

print('【{}】 {}'.format(area['id'], area['name']))

print('-------------------------------------------------')

def select_area(area_list):

while True:

user_input = input('请继续输入编号:').strip()

selected_area = [area for area in area_list if str(area['id']) == user_input or area['name'] == user_input]

if not selected_area:

print('编号错误,请重新输入')

continue

print('已选择:{}'.format(selected_area[0]['name']))

return selected_area[0]

def main():

print_area(provinces)

province = select_area(provinces)

cities = get_area_by_id(province['id'])

print_area(cities)

city = select_area(cities)

districts = get_area_by_id(city['id'])

print_area(districts)

district = select_area(districts)

streets = get_area_by_id(district['id'])

if not streets:

print(

'您选择的区域为:{}-{}-{},id:{}_{}_{}'.format(

province['name'], city['name'], district['name'],

province['id'], city['id'], district['id']

)

)

return

print_area(streets)

street = select_area(streets)

print(

'您选择的区域为:{}-{}-{}-{},id:{}_{}_{}_{}'.format(

province['name'], city['name'], district['name'], street['name'],

province['id'], city['id'], district['id'], street['id']

)

)

if __name__ == '__main__':

main()

python语言官方网站地址-python 中国地址相关推荐

  1. python语言基础-Python语言基础01-初识Python

    1. Python简介 1.1 Python的历史 Python的创始人为吉多·范罗苏姆(荷兰语:Guido van Rossum) 1989年的圣诞节期间:吉多·范罗苏姆为了在阿姆斯特丹打发时间,决 ...

  2. python语言的主网址-python官方网站

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人 ...

  3. 如何自学python语言-我是如何学习Python语言?

    我喜欢学习新的东西,包括工具,算法,技巧等.一来是帮助我更好地解决问题,二来学习的进程令我愉悦. 我是一位数据工作者,经常会使用到各种软件和工具帮助我解决各种数据问题,比方说数据的抽取与解析,数据的加 ...

  4. python语言程序设计嵩天-Python语言程序设计基础(第2版)嵩天课后答案

    嵩天.礼欣.黄天羽Python语言程序设计基础(第2版)习题答案本书提出了以理解和运用计算生态为目标的Python语言教学思想,在系统讲解Python语言语法的同时介绍了从数据理解到图像处理的14个P ...

  5. Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名)

    Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名) 目录

  6. Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略

    Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名.合并两个不同路径下图片文件名等目录/路径案例.正确加载图片路径)之详细攻略 目录 利用python ...

  7. Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法

    Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...

  8. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

  9. Python语言学习:解决python版本升级问题集合(python2系列→Python3系列)导致错误的总结集合

    Python语言学习:解决python版本升级问题集合(python2系列→Python3系列)导致错误的总结集合 目录 Python版本升级的原因 Text and binary data in P ...

最新文章

  1. win7 64位IE无法运行ActiveX控件的解决方法
  2. 通过init.rc中的property实现动态控制service的开启与关闭
  3. OpenCV SURF FLANN匹配的实例(附完整代码)
  4. SAP Spartacus B2B页面Budget页面的设计原理
  5. 架构思维其实就那么回事
  6. 如何彻底禁用Chrome浏览器的缓存功能
  7. 面试题:InnoDB 中一棵 B+ 树能存多少行数据?【面试不翻车,翻车就跑路】
  8. libuv 网络库设计概览译
  9. Unity面试题精选(3)
  10. 转数组_Java中IO必杀技-文件转字节数组
  11. 编写可复用的自定义按钮
  12. Android UI设计--ListView Item的OnItemLongClickListener同时监听两种事件
  13. apache poi处理表格示例
  14. Web应用小案例:猜数小游戏
  15. 银行业客户全面老龄化,该如何应对?
  16. Bailian4108 羚羊数量-Number Of Antelope【递推+打表+递归+记忆化递归】
  17. ajax异步请求中途取消
  18. 基准测试spec cpu2006
  19. 【毕设论文——必修篇】如何正确引用参考文献?让参考文献格式变标准
  20. 【zotero】从知网万方维普WOS等数据库上导出格式引文-引文格式到zotero中

热门文章

  1. 坚持教学与科研相结合
  2. 大型高并发高负载网站的系统架构(转)
  3. Android去掉顶部的阴影
  4. Entity Framework 4.1 DbContext使用记之二——如何玩转本地实体? DbSet.Local属性的使用与实现...
  5. DevExpress控件使用的一点小问题
  6. 文本比较算法Ⅴ——回顾贴,对前面几篇文章的回顾与质疑
  7. 旋转动画 rotate
  8. 关于大型网站技术演进的思考(一)--存储的瓶颈(上)
  9. iOS开发之解决隐藏tabbar后原位置无法响应点击事件的问题
  10. C#操作XML小结_转载