当前位置:网站首页>学习总结week4_1json
学习总结week4_1json
2022-08-10 02:57:00 【非鱼丶丶】
python文件操作-json
服务端java/php/python/go
ios OC swift
安卓 java
windows C#
Mac OC swift
网页客户端 js
通用数据格式:json、xml
一、json
json和xml 都是通用的数据格式,可以用于不同编程语言之间的数据交流
json相对xml更小更轻,传输数据更快,保存在文件里也更新
xml相对json更安全
1.json数据格式
json数据格式的要求:一个json有且只有一个数据;唯一的这个数据必须是json支持的类型的数据
json支持的类型:
1.数字: 包括整数和小数,表示的时候直接写:1、23.5、-5
2.字符串: 用双引号引起来的数据"3451"、“aa\n155\u4e00”
3.布尔: 只有ture 和 false 两个值
4.空值: null
5.数组: 相当于python的列表:[数据1, 数据2, …]
6.字典: python的字典,但是键只能是字符串 “”
2.python和json数据之间的相互转换
python中提供了json模块专门来处理python中的json问题
- json转python
json -> python
数字 数字
字符串 字符串
布尔 布尔(true-> True、false->False)
空值 空值(null->None)
数组 列表
字典 字典
对应的函数:json.loads(json格式字符串) - 将json格式字符串对应的json数据转换成python数据
注意:json格式字符串指的是字符串内容是json内容是json数据的字符串
res = open('test.json', encoding='utf-8').read()
res1 = json.loads(res)
print(res1)
res1 = json.loads('[true, null, false, 1, "oo"]')
print(res1)
# 示例:从网页接口中解析数据获取所有英雄的名字
# 1.获取json数据(从文件中读出来、直接做网络请求)
import requests
response = requests.get('https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js?ts=2766570')
content = response.text
print(type(content), content)
# 2. json解析(将json数据转化成对应的Python数据)
result = json.loads(content)
for x in result['hero']:
print(x['name'], x['title'])
2)python转json
python -> json
int、float 数字
str 字符串
bool True-> true、False->false
None null
列表、元组 数组
字典 字典(键会变为字符串)
对应函数: json.dumps(python数据) - 将指定python数据转换成对应的json格式字符串
res = json.dumps(‘100’)
print(res)
res = json.dumps('100')
print(res)
3.实际应用
=========添加学生==========
请输入学生姓名:stu1
请输入学生的年龄:19
请输入学生的手机号:110
请输入学生的专业:电子信息
请输入学生的籍贯:重庆
添加成功!
️1. 继续
️2. 退出
请选择:1
=========添加学生==========
请输入学生姓名:stu2
请输入学生的年龄22
请输入学生的手机号:3332
请输入学生的专业:电子信息
请输入学生的籍贯:重庆
添加成功!
️1. 继续
️2. 退出
请选择:1
=========添加学生==========
请输入学生姓名:stu2
请输入学生的年龄:22
请输入学生的手机号:3332
请输入学生的专业:电子信息
请输入学生的籍贯:重庆
添加成功!
️1. 继续
️2. 退出
请选择:2
(显示已经添加的所有的学生信息!)
(程序结束)
# 数据存储思路
1. 已经添加过的所有学生需要持久化
2. 文件内容格式:
[
{"name": "小明", "age": 18, "major":"电子信息", "address": "成都"},
...
]
import json
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) # type: list
# [{}]
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)
break
if __name__ == '__main__':
# add_student()
# 统计电子专业学生的人数:
all_student = json.loads(open('files/student.txt', encoding='utf-8').read())
count = 0
for x in all_student:
if x['major'] == '电子':
count += 1
print(count)
边栏推荐
- Excel Advanced Drawing Skills 100 Lectures (23) - Countdown Counting in Excel
- HackTheBox——Beep
- QT modal dialog and non-modal dialog learning
- C - The Battle of Chibi (dp加树状数组前缀和优化)
- 6 common plugin recommendations in Pycharm
- Take you to an in-depth understanding of the version update of 3.4.2, what does it bring to users?
- 三极管开关电路参数设计与参数介绍
- 关于redis在业务中的应用问题,如何解决?
- flutter 创建可增型列表和列表排序
- 驱动程序开发:按键中断之异步通知
猜你喜欢
Small program subcontracting and subcontracting pre-download
盘式导电滑环的优点和缺点
金融口译,口译中金融高频词有哪些
Robust Real-time LiDAR-inertial Initialization (Real-time Robust LiDAR Inertial Initialization) Paper Learning
2022/08/09 学习笔记 (day26) IO流
[Semantic Segmentation] 2022-HRViT CVPR
二维空间下的向量旋转
从8k到13k,我全靠这本《接口自动化测试——从入门到精通》
三极管开关电路参数设计与参数介绍
【图像分类】2022-CycleMLP ICLR
随机推荐
量化投资学习——在FPGA上运行高频交易策略
获取属性特性几种方法
It's almost 35, still "did a little"?What happened to the test workers who had been in the industry for a few years?
树的介绍、树的定义和基本术语、二叉树的定义和性质、二叉树的顺序表示与实现和链式表示与实现以及树的遍历方法以及两种创建方式
芯片加速器 Accelerator
vue项目 npm run build 打包项目防止浏览器缓存
第二十一章 源代码文件 REST API 参考(三)
是什么让训练综合分类网络艰苦?
MySQL: Introduction to Logging System | Error Log | Query Log | Binary Log: Bin-log Data Recovery Practice | Slow Log Query
goland控制台显示重叠问题解决方案
书法家唐效奇
applet wxs
PostgreSQL相关语法及指令示例
如何编写一份优质的测试用例?
从8k到13k,我全靠这本《接口自动化测试——从入门到精通》
WPF 实现更换主题色
从零开始配置 vim(9)——初始配置
flutter异步
shell文本编辑awk
liunx PS1 settings