JsonPath模块的使用方法
jsonpath的使用场景
如果有一个多层嵌套的复杂字典,想要根据key和下标来提取value,这是比较困难的。
jsonpath模块就能解决这个痛点,接下来就让我们一起学习jsonpath模块
jsonpath安装
因为jsonpath是第三方模块,所以需要额外安装
pip install jsonpath
jsonpath提取数据方法
安装好之后引入jsonpath模块
from jsonpath import jsonpath
使用
res = jsonpath(‘要提取数据的字典’,‘jsonpath语法规则字符串’);
jsonpath语法规则
JSONPath 描述
$ 根节点
@ 现行节点
. or [ ] 取子节点
n / a 取父节点,jsonpoth未支持
. . 不管任何位置,选择所有符合条件的节点
* 匹配所有元素节点
n / a 根据属性访问,json不支持,因为json是一个key-value递归结构,不需要属性访问。
[ ] 迭代器示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等)
[ , ] 支持迭代器中做多选。
?() 支持过滤操作
() 支持表达式计算
n / a 分组,jsonpath不支持
小案例
https://www.lagou.com/lbs/getAllCitySearchLabels.json 练习网址
安装过程可能遇到的小问题
pip install jsonpath命令:
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is
availa这是因为当前pip版本过低。
解决问题:
python -m pip install --upgrade pip 复制此代码到你的终端运行即可
ERROR: Could not install packages due to an OSError: [WinError 5]
拒绝访问。
这是因为pycharm使用时没有权限去修改文件,退出重新用管理员运行即可
WARNING: Ignoring invalid distribution -ip
(c:\python310\lib\site-packages)转到您的site-packages目录,查看是否有名称以’~'波浪号开头的文件夹,如果有,请删除该文件夹,site-packages可能存在
的位置Python310\Lib\site-packages;
那么为什么会出现这种问题呢:
卸载软件包时,pip
现在会将其重命名为无法导入的名称,一旦确认一切都会成功(包括在升级时安装新版本),它才会删除这些文件夹。如果出现故障,它会将它们重命名。以前,它会将整个内容复制到另一个目录,可能还有另一个驱动器,然后在需要时将它们复制回来。所以这个变化是一个显着的性能改进,特别是对于其中包含大量文件的包。
您在这里看到的是由于某种原因删除失败 - 也许 pip 崩溃了?-
所以目录没有被删除。我认为 pip
完全忽略了它们,但也许自从我测试之后发生了其他变化?目录可以安全删除。
https://www.linuxtutorials.org/fix-warning-ignoring-invalid-distribution-site-packages/
该网址详细讲解
这时再次去运行pip install
jsonpath的时候就可以成功了,但是你以为这就结束了吗?不,你可能还会遇到以下问题:
问题:安装jsonpath成功了,在pycharm中导入时却不能用
刚才安装jsonpath时明明是显示安装成功的,为什么导入会报错呢?
因为通过pip安装的模块默认是全局安装的,安装位置是在python.exe解释器同级目录下的 Lib\site-packages 里面。而你此
时的脚本 在选择 python解释器 的时候可能没有勾选如下图选项:
解决方法:打开设,项目:code,点击Python解释器,点击设置按钮,点击添加,勾选下图选项即可,当然你如果使用的是英文的话,点击该链接
https://blog.youkuaiyun.com/mccree618/article/details/118294929
总结
这是博主自学python遇到的一些坑,希望可以帮助到大家,以上问题可能有的同学很早就遇到过,但是有的同学和博主一样会
踩这样的坑,所以,这是为了大家能更快的解决问题,我把我踩到的坑给大家总结一下,希望可以帮助到你。