正则(处理字符串问题的工具)、文件操作(json数据、学生管理系统)、csv文件、Excel文件、邮件自动化发送、Word、PDF
补充:抛出异常 - 主动让程序崩溃
语法:raise 异常类型
说明:
1)raise - 关键字;固定写法
2)异常类型 - 可以是系统提供的异常类型(例如:IndexError、ValueError、KeyError、TypeError等);
也可以是自定义错误类型(自定义错误类型必须是Exception的子类)
class PasswordError(Exception):
# 在错误类型中重写__str__方法,可以定制错误提示信息
def __str__(self):
return '密码错误'
json数据
-
什么是json
json和xml是一种通用的数据格式,可以用于不同编程语言之间的数据交流。
json对于xml更小更轻、传输速度更快;xml相对于json更安全。 -
json数据
json数据格式的要求:一个json有且只有一个数据;唯一的这个数据必须是json支持的类型的数据
json支持的类型:
1)数字: 包括整数和小数,表示的时候直接写:100、23.5、-3.14、3e4
2)字符串: 用双引号引起来的数据:“abc”、“小明”、“asdjjka\n”
3)布尔: 只有true和false两个值
4)空值: null
5)数组: 相当于Python的列表:[数据1, 数据2, …]
6)字典: 相当于Python的字典,但是键只能是字符串:{键1:值1, 键2:值3, …} -
python数据和json数据之间的相互转换
python中提供json模块专门用来处理Python中的json数据
import json # 1)json转python """ json -> Python 数字 -> 数字 字符串 -> 字符串(双引号变单引号) 布尔 -> 布尔(true -> True、false -> False) 空值 -> 空值(null -> None) 数组 -> 列表 字典 -> 字典 对应的函数:json.loads(json格式字符串) - 将json格式字符串对应的json数据转换成Python数据 注意:json格式字符串指的是字符串内容是json数据的字符串 """ # result = open('files/data.json', encoding='utf-8').read() # print(result) # result1 = json.loads(result) # print(result1) # result = json.loads("abc") # 报错,字符串内容是abc,不是一个合法的json数据 # print(result) # result1 = json.loads('"abc"') # print(result1, type(result1)) # abc <class 'str'> # result1 = json.loads('100') # print(result1, type(result1)) # 100 <class 'int'> # result1 = json.loads('true') # print(result1, type(result1)) # True <class 'bool'> # result1 = json.loads('[100, "小明", null, true, false]') # print(result1, type(result1)) # [100, '小明', None, True, False] <class 'list'> """# 实例:从网页接口解析数据获取所有英雄的名字 # 1.获取json数据(从文件读出来、直接做网络请求) import requests res = requests.get( url='https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js?ts=2766570', headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } ) content = res.text # 2.json解析(将json数据转化成对应的Python数据) print(content) result = json.loads(content) print(result) for i in result['hero']: print(i['name'], i['title'])""" # 从文件读出来 """result = open('hero.json', encoding='utf-8').read() result1 = json.loads(result) print(result1) for i in result1['hero']: print(i['name'], i['title'])""" # 2)python转json """ python -> json int、float -> 数字 str -> 字符串(单引号会变成双引号) bool -> True->true、False->false None -> null 列表、元组 -> 数组 字典 -> 字典 对应的函数: json.dumps(python数据) - 将制定的python数据转换成对应的json格式字符串 """ json.dumps(100) # '100' json.dumps('abc') # '"abc"' json.dumps(True) # 'true' result = json.dumps({'a': 10, 20: 30, 'name': '小明', 'isMaeerd': True}) print(result, type(result)) # {"a": 10, "20": 30, "name": "\u5c0f\u660e", "isMaeerd": true} <class 'str'> print(json.dumps('abc')) # '"abc"'
示例:学生管理系统添加学生
import json
"""
=======添加学生=======
请输入学生的姓名:
请输入学生的年龄:
请输入学生的手机号:
请输入学生的专业:
请输入学生的籍贯:
添加成功!
♥1.继续
♥2.退出
请选择:1
请输入学生的姓名:
请输入学生的年龄:
请输入学生的手机号:
请输入学生的专业:
请输入学生的籍贯:
添加成功!
.........
请选择:2
(显示已经添加的所有的学生信息!)
(程序结束)
"""
# 数据存储思路
"""
1.已经添加过的学生需要持久化
2.文件内容的格式:
[
{
"name": "小明",
"age": 18,
"major": "软件",
"address": "成都"
}
......
]
"""
def add_student():
while True:
# 1.输入学生信息
print('=======添加学生=======')
name = input('请输入学生的姓名:')
age = input('请输入学生的年龄:')
tel = input('请输入学生的手机号:')
major = input('请输入学生的专业:')
address = input('请输入学生的籍贯:')
# 2.保存学生信息
content = open('files/student.txt', encoding='utf-8').read()
all_students = json.loads(content)
all_students.append({'name': name, 'age': age, 'tel': tel, 'major': major, 'address': address})
open('files/student.txt', 'w', encoding='utf-8').write(json.dumps(all_students))
print('添加成功')
# 3.提示继续还是退出
print('♥1.继续')
print('♥2.退出')
value = input('请选择:')
if value == '1':
pass
else:
# 打印已经添加过的学生
print(all_students)
print('程序结束')
break
if __name__ == '__main__':
# add_student()
# 统计电子专业学生的人数:
all_students = json.loads(open('files/student.txt', encoding='utf-8').read())
count = 0
for i in all_students:
if i['major'] == '软件':
count += 1
print(count)