Python json格式处理

ぃ、小莉子 提交于 2020-02-16 22:44:51

Python json格式处理

首先放一段代码

import requests
import jsonpath
import json
f=open('ip.txt','r',encoding='utf-8')
for my_ip in f.readlines():
    my_ip=str(my_ip[:-1])
    respons=requests.get('http://ip-api.com/json/{ip}?lang=zh-CN'.format(ip=my_ip)).json()
    countr=jsonpath.jsonpath(respons,"$..country")
    sheng=jsonpath.jsonpath(respons,"$..regionName")
    cit=jsonpath.jsonpath(respons,"$..city")
    ipip=jsonpath.jsonpath(respons,"$..query")
    print(respons)
    print(countr+sheng+cit+ipip)

Json 定义

JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。

1.json moudle使用

Python与JSON数据类型对应表:
Python JSON 说明
dict object 字典
list, tuple array 序列
str string 字符串
int, float number 数字类型
True true 布尔值True
False false 布尔值 False
None null 空值

既然知道了为什么要转换,就来了解怎么转换,这就需要用到Python的内置模块json,内置模块,在代码中直接引用即可:

import json

json模块中主要用到的就4个函数:

json.dumps(): 将Python数据编码(转换)为JSON数据;
json.loads(): 将JSON数据转换(解码)为Python数据;
json.dump(): 将Python数据编码并写入JSON文件;
json.load(): 从JSON文件中读取数据并解码。

2.jsonpath的运用

JsonPath与XPath语法对比:

Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。

Xpath JSONPath 描述
/ $ 跟节点
. @ 现行节点
/ . or [] 取子节点
.. n/a 就是不管位置,选择所有符合条件的条件
* * 匹配所有元素节点
[] [] 迭代器标示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等)
&#124 [,] 支持迭代器中做多选
[] ?() 支持过滤操作
n/a () 支持表达式计算
() n/a 分组,JsonPath不支持

注意事项:

json.loads()是把Json格式字符串解码转换成Python对象,如果在json.loads的时候出错,要注意被解码的Json字符的编码。

字符串编码转换

任何平台的任何编码,都能和Unicode互相转换。

UTF-8与GBK互相转换,那就先把UTF-8转换成Unicode,再从Unicode转换成GBK,反之同理。

# 这是一个 UTF-8 编码的字符串
utf8Str = "你好地球"

# 1. 将 UTF-8 编码的字符串 转换成 Unicode 编码
unicodeStr = utf8Str.decode("UTF-8")

# 2. 再将 Unicode 编码格式字符串 转换成 GBK 编码
gbkData = unicodeStr.encode("GBK")

# 1. 再将 GBK 编码格式字符串 转化成 Unicode
unicodeStr = gbkData.decode("gbk")

# 2. 再将 Unicode 编码格式字符串转换成 UTF-8
utf8Str = unicodeStr.encode("UTF-8")

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!