python json格式字符串_Python json格式处理

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

就是不管位置,选择所有符合条件的条件

*

*

匹配所有元素节点

[]

[]

迭代器标示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等)

|

[,]

支持迭代器中做多选

[]

?()

支持过滤操作

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")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值