1.json模块介绍
2.Json转换为Python
注意:json的字符串需要是双引号的,而字典一般是单引号的
这里注意:什么时候使用loads、什么时候使用load
import json
# 1.把Json字符串,转换为Python数据
# 1.1 准备JSON字符串
json_str = '''[{"provinceName":"法国","currentConfirmedCount":32710763,"confirmedCount":33229834},
{"provinceName":"美国","currentConfirmedCount":22710763,"confirmedCount":23229834}]'''
# 1.2 把Json字符串,转换为python数据
rs = json.loads(json_str)
print(rs)
print(type(rs)) # <class 'list'>
print(type(rs[0])) # <class 'dict'> 单引号
# 2.把Json格式文件,转化为Python类型数据
# 2.1 构建指向该文件的文件对象(涉及到文件操作)
with open('data/test1') as fp:
# 2.2 加载该文件对象,转换为python类型的数据
python_list = json.load(fp) # 注意:这里是load不是loads
print(python_list)
print(type(python_list))
print(type(python_list[0]))
3.python转换为Json
import json
# 1.把python转换为json字符串
# 1.1 python类型的数据
json_str = '''[{"provinceName":"法国","currentConfirmedCount":32710763,"confirmedCount":33229834},
{"provinceName":"美国","currentConfirmedCount":22710763,"confirmedCount":23229834}]'''
rs = json.loads(json_str)
# 1.2 把python转换为json字符串
json_str = json.dumps(rs, ensure_ascii=False)
print(json_str)
# 2.把python以json格式存储到文件中
# 2.1 构建要写入文件对象
with open('data/test2.json', 'w',) as fp:
# 2.2 把python以json格式存储到文件中
json.dump(rs, fp, ensure_ascii=False)
4.案例解析疫情信息的Json字符串
# 1.导入相关模块
import re
import requests
from bs4 import BeautifulSoup
import json
# 2.发送请求,获取疫情首页内容
response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia')
home_page = response.content.decode()
# 3.使用BeautifulSoup提取疫情数据
soup = BeautifulSoup(home_page, 'lxml')
script = soup.find(id="getListByCountryTypeService2true")
# print(script) # 这里直接写script就行,就能把内容全部打印出来
# 4.使用正则表达式,提取json字符串
json_str = re.findall(r'\[.+\]', script.string)[0]
# print(json_str)
# 5、把json字符串转换为python类型的数据
last_day_corona_virus=json.loads(json_str) # 最新的信息
print(last_day_corona_virus)
'''
通过观察控制台输出的内容查看是Json字符串(json字符串的键是双引号),还是python里的列表(列表的键是单引号)
'''