10月11日学习总结
一、练习:将100以内的素数输入到一个文件中
def is_prime(num:int) -> bool:
"""
判断一个正整数是不是质数
:param num: 正整数
:return: 质数返回True,否则返回False
"""
for i in range(2,sqrt(num)+1):
if num%i == 0:
return False
return True
with open('prime.txt','w') as file:
for n in range(2,100):
if is_prime(n):
print(n)
二. 对象的序列化和反序列化
1.序列化(serialization)
把一个对象(字典、列表等)变成字符串(str)或者字节串(bytes-二进制数据)
2.反序列化(deserialization)
从字节串或字符串中还原一个对象(字典、列表等)
3.JSON的序列化操作
1.Python的标准库有一个json/pickle模块,可以支持我们做序列化和反序列化操作
2.Json
(1)JSON —> JavaScript Object Notation —> JavaScript语言创建对象的字面量语法
这种数据格式也非常适合在两个系统(尤其是异构的系统)传输数据(因为它是纯文本),所以今天当我们说到JSON,更多的时候是把它当成一种数据交换格式。
3.Python中的字典跟JSON格式非常相似,所以我们可以通过将字典转成JSON格式的字符串,就可以写入文件中实现持久化。
JSON序列化通用,所有编程语言都可读;字符串(txt文件)
4.json.dumps/json.dump
(1)json.dumps(变量, file=文件名):分两步,dumps先把对象变成字符串,然后再往file里写
content = json.dumps(变量)
file.write(content)
(3)json.dump(变量,fp=文件名):将dumps的两步合为一步
import json
person = {
'name': '浩宇',
'age': 25,
'sex': True,
'friends': ['赵云', '马超', '辛弃疾'],
'car': {
'brand': 'QQ',
'max_speed': 120
}
}
with open('person.txt', 'w') as file:
# 序列化
# content = json.dumps(person)
# file.write(content) # dumps先把对象变字符串
# print(json.dumps(person), file=file)
json.dump(person, fp=file) # 可以指定参数
4. JSON的反序列化操作
-
JSON:读取文件中的JSON格式数据还原成字典对象
(1)json.load(fp=文件名)(2)json.loads(变量):变量是读文件获取到的字符串
import json with open('person.txt') as file: # 反序列化:将字符串还原成(字典) # content = file.read() # obj = json.loads(content) # print(obj, type(obj)) # 从文件中读取字符串还原成字典对象 obj = json.load(fp=file) print(obj) print(type(obj))
三. 联网获取数据
1. URL
- URL —> 网址 —> 统一资源定位符 —> 能够唯一标识一个(网络)资源的符号
- URI —> 统一资源标识符 —> URL + URN
- 协议 —> 规范和标准 —> 网络协议 —> 通过网站进行通信的双方要遵守的规范和标准
- HTTP(S) —> 超文本传输协议(S:安全环境) —> 请求响应式协议
2.三方库
可以使用Python的包管理工具 pip 来安装和管理三方库以及三方工具
修改 pip 下载源为国内的镜像网站(推荐使用豆瓣网的镜像)
pip config set global.index-url https://pypi.doubanio.com/simple
查找三方库:pip serach requests
安装三方库:pip install requests
卸载三方库:pip uninstall requests
更新三方库:pip install -U requests
3.三方库requests的使用
使用三方库 requests 可以非常方便的实现通过URL访问网络资源的操作
requests.get(url=‘网址’, params={参数1、参数2、…}):get函数会通过你指定的URL向web服务器发起一个请求,该指数会返回一个响应对象
响应对象.json():url请求返回的是一个json文件,用.json转换成字典
json.loads(响应对象**.text**):字符串文件转回成字典
四. Excel文件操作
import openpyxl
创建一个Excel工作簿:workbook = openpyxl.Workbook()
获取默认的工作表:sheet = workbook.active
添加表头:sheet.append(列表、元组、字典等)
保存工作簿:workbook.save(‘文件名.xlsx’)
import openpyxl
# 创建一个Excel工作簿
workbook = openpyxl.Workbook()
# 获取默认的工作表
sheet = workbook.active
# 添加表头
sheet.append(('姓名','语文','数学','英语'))
sheet.append(('王博杨',50,60,70))
sheet.append(('李晓',50,60,70))
sheet.append(('王浩宇',50,60,70))
sheet.cell(5,1,'代吉')
# 保存工作簿
workbook.save('学生考试成绩表.xlsx')
import openpyxl
# 创建一个Excel工作簿
workbook = openpyxl.Workbook()
# 获取默认的工作表
sheet = workbook.active
# 添加表头
sheet.append(('姓名','年龄','电话号码'))
sheet.append(('wby','18','113'))
sheet.append(('lx','23','116'))
# 保存工作簿
workbook.save('学生信息.xlsx')
from datetime import datetime
import openpyxl
import requests
import json
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.append(('title','url','source'))
for page in range(1,6):
resp = requests.get(
url='http://api.tianapi.com/topnews/index',
params={
'key':'e8c5524dd2a365f20908ced735f8e480',
'page':page,
'num':20
}
)
result = resp.json()
# print(result)
for news_dict in result['newslist']:
sheet.append((news_dict['title'],news_dict['url'],news_dict['source']))
current=datetime.now()
workbook.save(f'新闻数据_{current.year}{current.month:0>2d}{current.day:0>2d}.xlsx')