用 Python 读取&解析 json

用 Python 读取&解析 json

json 范例:

1
2
3
4
5
6
7
8
9
{
"name": "United States",
"population": 331002651,
"capital": "Washington D.C.",
"languages": [
"English",
"Spanish"
]
}

JSON以键值对的形式传递数据,类似XML,XML示例:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<country>
<name>United States</name>
<population>331002651</population>
<capital>Washington D.C.</capital>
<languages>
<language>English</language>
<language>Spanish</language>
</languages>
</country>

众所周知,Python原生支持JSON数据,json模块是标准库的一部分,无序手动解析。

可以将JSON数据从JSON格式转换到等效的Python对象,例如dictionary和list。JSON模块还可以将Python对象转换为JSON格式。

具体使用:

将json字符串转化为字典

传入:字符串格式的 json 数据。

1
2
3
4
5
6
import json
# 导入json包
country = '{"name": "United States", "population": 331002651}'
# 定义字符串,json,country
country_dict = json.loads(country)
# 使用json.loads()方法处理country

结果country_dict是字典。

注意,json内数据类型和Python内有一一对应的关系。

JSONPython
objectdict
arraylist
stringstr
number (integer)int
number (real)float
trueTrue
falseFalse
nullNone

将json文件转化为字典

使用open()方法导入文件,然后使用json.loads()处理读入的字符串。

1
2
3
4
5
6
import json

with open('united_states.json') as f:
data = json.load(f)

print(type(data))

测试结果:

python 字典单向读取,打印时呈现json格式。

用 Python 调用 api

1
2
3
4
5
import requests
def request_data(url):
req = requests.get(url, timeout=30) # 请求连接
req_jason = req.json() # 获取数据
return req_jason

也就是通过requests包里的requests.get(url,timeout)进行获取内容,这个方法会返回一个字符串。

Python 正则模块 re

Q:如何将非标准json数据(例如nga的api)掐头去尾?

A:使用re的findall()模块

1
2
3
4
5
6
7
8
# 处理形如ashdasbdh(
# 中间是json
# );
import re
dt = re.findall(r'[(](.*?)[)]', text)
data_json = json.loads(dt[0])
print(dt)
print(data_json)

vscode json 自动排版

使用json tools工具内的 ctrl+alt+M快捷键


用 Python 读取&解析 json
http://petertan303.github.io/2023/04/08/2023年4月8日/
作者
peter?
发布于
2023年4月8日
许可协议