知识点:
1 Python中的小括号()
代表tuple元祖数据类型,元祖是一种不可变序列。创建方法很简单,大多数时候都是小括号括起来的。
代表list列表数据类型,列表是一种可变序列。创建方法既简单又特别。
代表dict字典数据类型,字典是Python中唯一内建的映射类型。字典中的值没有特殊的顺序,但都是存储在一个特定的键(key)下。键可以是数字、字符串甚至是元祖。
4 json文件的格式:
5 zip函数:用于可迭代对象的列表的对应
append():用于列表数据的添加
6. 环境和要装的库说明:
本机是python3.6.5,需要的库如下
import requests
import json #json库
import jsonpath #jsonpath库,有点类似xpath,按节点提取数据
import pygal #画雷达图的库
完整代码如下:
import requests
import json
import jsonpath
import pygal
#1请求数据
r = requests.get("http://pg.qq.com/zlkdatasys/data_zlk_zlzx.json")
#print(r.text)
#2把json数据转成python数据
py_data = json.loads(r.text)
#print(py_data)
#获取枪支数据列表
gun_name = jsonpath.jsonpath(py_data,"$..mc_94")[1:8]
#获取性能数据的列表
gun_xinn = jsonpath.jsonpath(py_data,"$..ldtw_f2")[0:7]
#print(gun_name, gun_xinn)
data =[]
#枚举列出gun_xinn列表的数据
for i in gun_xinn:
print(i) #打印枚举访问到的元素是个列表,列表中的元素是个字典{}
#从gun_xinn列表中枚举到子元素字典{},取到子元素字典的键的键值(默认是字符串型),转换成int型,然后构造一个列表,添加到data列表中
data.append([int(i[0]['wl_45']),int(i[0]['sc_54']),int(i[0]['ss_d0']),int(i[0]['wdx_a7']),int(i[0]['zds_62'])])
print(data)
#print(type(data[0][0]))
#4.雷达图设计
#调用raser这个类,设置雷达图
radar_chart = pygal.Radar()
#添加雷达图标题
radar_chart.title ="步枪性能"
#添加雷达图各顶点含义
radar_chart.x_labels =["威力","射程","射速","稳定性","子弹数"]
#用zip函数将可迭代对象gun_name,data中的元素名对应好,返回列表
for n,din zip(gun_name,data):
print(n,d)
#预处理好的列表添加到雷达图中
radar_chart.add(n,d)
#保存图像
radar_chart.render_to_file("gun.svg")
在win7 64位 pycharm,python版本3.6.5,调试通过.知识点比较多.做的笔记.
核心代码截图: