Python课程笔记(九)
本次课程主要学习了Excel和JSON格式的一些读写操作。课程代码
一、Excel数据读写操作
1、安装模块
pip install xlrd
pip install xlwt
网不好可以采用三方库:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名
2、读取数据
(1)导入xlrd模块
import xlrd
(2)打开Excel文件读写数据,创建文件对象赋值给workfile:
workbook = xlrd.open_workbook(r'd:\\demo1.xlsx')
(3)获取工作表,创建表格对象table有三种方法:
table = workbook.sheet_names() #获取所有工作表
table = workfile.sheet_by_index(0) #通过索引顺序获取
table = workfile.sheet_by_name('Sheet1') #通过名称获取
(4)获取行数和列数
nrows = table.nrows #获取工作表行数
ncols = table.nclos #获取工作表列数
(5)获取指定单元格的数据,注意行和列的索引值都是从0开始
cell_A1 = table.cell(0,0).value #获取A1位置的数据
cell_C1 = table.cell(2,3).value #获取C4位置的数据
一个读取demo:
# 导入xlwt模块
import xlrd
def read_excel():
# 打开文件
workbook = xlrd.open_workbook(r'F:\HelloWorld\10TenthClass\\demo1.xls')
# 获取所有sheet
print("\n共有如下几个数据表:\n")
print(workbook.sheet_names())
sheet2_name = workbook.sheet_names()[1]
# 根据sheet索引或者名称获取sheet内容
sheet2 = workbook.sheet_by_index(1) # sheet索引从0开始
sheet2 = workbook.sheet_by_name('Sheet2')
# sheet的名称,行数,列数
print("\nshee2共有行、列数:\n")
print(sheet2.name, sheet2.nrows, sheet2.ncols)
# 获取整行和整列的值(数组)
rows = sheet2.row_values(2) # 获取第3行内容
cols = sheet2.col_values(1) # 获取第2列内容
print("\nshee2第3行的内容:")
print(rows)
print("\nshee2第2列的内容:")
print(cols)
# 获取单元格内容
print("\n三种方法获取shee2第2行第1列的内容:")
print(sheet2.cell(1, 0).value)
print(sheet2.cell_value(1, 0))
print(sheet2.row(1)[0].value)
# 获取单元格内容的数据类型
print("\nshee2第2行第1列的数据类型为:")
print(sheet2.cell(1, 0).ctype)
if __name__ == '__main__':
read_excel()
3、写入数据
(1)导入xlwt模块
import xlwt
(2)新建一个excel文件
file = xlwt.Workbook() #注意Workbook首字母大写
(3)新建一个sheet工作表
table = file.add_sheet('sheet name')
(4)写入数据table.write(行,列,value)
table.write(0,0,'test')
(5)保存文件
file.save('Excel_Test.xls')
一个写入demo:
import xlwt
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('MySheet1')
sheet.write(0,1,'111')
sheet.write(1,1,'222')
sheet.write(5,5,'我们正在学习文件操作') # 从0开始索引,在表格中会显示在(F,6)
wbk.save('Excel_Test.xls') #默认保存在与程序同文件夹下
二、字典
Python字典是包含多个元素的一种可变数据类型。其元素由“键:值”对组成,即每个元素包含“键”和“值”两部分。
1、字典的定义
用大括号"{}"把元素括起来构成一个字典对象。字典中的元素用“字典名[键名]”表示。
D = {'ID':1001, 'name':'张三', 'age':23}
print(D)
print(D['ID'])
print(D['name'])
print(D['age'])
2、字典的操作
(1)字典元素的修改
uil = {'name':'http', 'port':80}
uil['name'] = 'ftp'
uil['port'] = 90
print(uil)
(2)字典元素的添加
D = {'ID':1001, 'name':'张三', 'age':23}
print(D)
print(D['ID'])
print(D['name'])
print(D['age'])
D['sex'] = '男'
print(D)
三、JSON格式
1、JSON数据
JSON数据值可以是一个简单的字符串(String)、数值(Number)、布尔值(Boolean),也可以是一个数组或一个复杂的Object对象。
- JSON的字符串需要用单引号或双引号括起来
- JSON数值可以是整数或浮点数
- JSON的布尔值为true或false
- JSON的数组用方括号括起来
- JSON的Object对象用花括号括起来
2、表示数据(简洁高效)
(1)、用键-值对表示数据
JSON数据书写格式:键名{key}:值{value}
key必须是字符串 : value可以是字符串、数值、布尔值
'firstName':'John'
(2)、JSON对象
JSON对象可以包含多个键-值对,要求在花括号“{}”中书写
{'firstName':'John' ,'lastName':'Doe' ,'age':20}
当然,JSON对象的值也可以是另一个对象。
{
'Name':'Jack',
'age':20,
'friend':{'Name':'Tom','age':18}
}
(3)、JSON数组
直接看一组案例:
students=[
{'sid':001,'name':'张三'},
{'sid':002,'name':'李四'},
{'sid':003,'name':'王五'},
]
访问:
students[0].name;
修改:
students[0].name='张一山';
(4)、JSON文件
保存文件,文件类型为“.json”
3、JSON模块
JSON模块是Python标准库所提供的,对JSON数据进行解析,将JSON格式数据与Python标准数据类型相互转换。
python数据类型 | JSON格式数据 |
---|---|
dict | object |
list | array |
str | string |
None | null |
(1)导入模块
import json
(2)编码与解码
主要方法:
编码:json.dumps(obj) 将JSON对象obj转成成Python的数据类型
解码:json.loads(str) 将Python数据类型转换回JSON对象
json.dump()把数据写入文件write中,json.load()把文件中的数据读取read出来。
4、读取JSON文件
读取一组数据:
import json
data = {
'name' : 'zhangdasan',
'age' : 21,
'email' : 'zdsan@163.com'
}
with open('test.json', 'w') as f:
json.dump(data, f)
print('成功写入数据到文件!\n')
f.close()
with open('test.json', encoding='utf-8') as f:
line = f.readline()
d = json.loads(line)
name = d['name']
age = d['age']
email = d['email']
print(name, age, email)
f.close()
读取多组数据:
import json
data = [
{"sid":"a1001","name":"zhangdasan","age": 21},
{"sid":"a1002","name":"lixianli","age": 20},
{"sid":"a1003","name":"zhaozhijian","age": 22},
]
f1 = open('test.json', 'w')
json.dump(data, f1)
print('成功写入数据到文件!\n')
f1.close()
f2 = open('test.json', encoding='utf-8')
line = f2.readline()
d = json.loads(line)
print(d)
for i in d:
sid = i['sid']
name = i['name']
age = i['age']
print(sid,name, age)
f2.close()
5、一道作业题
作业:
将你和2位同学的姓名、专业、年龄、籍贯用json格式表示,
并且保存为stu.json磁盘文件,还要读出这3条内容。
import json
data = [
{"name":"王哲铭","age":20,"profession":"信息工程","hometown":"湖北"},
{"name":"杨幂","age":18,"profession":"表演艺术","hometown":"北京"},
{"name":"杨超越","age":18,"profession":"音乐创作","hometown":"江苏"},
]
f1 = open('stu.json', 'w')
json.dump(data, f1)
print('成功写入数据到文件!\n')
f1.close()
f2 = open('stu.json', encoding='utf-8')
line = f2.readline()
d = json.loads(line)
print(d)
for i in d:
name = i['name']
age = i['age']
profession = i['profession']
hometown = i['hometown']
print(name, age, profession, hometown)
f2.close()
Python课程笔记(九)的更多相关文章
- Python学习笔记九
Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...
- Python课程笔记(一)
由于新冠状病毒的爆发,不得不在家里上网课,开课已经两个礼拜了,今天上完Python课后,准备整理一下最近学习Python的笔记. 人生苦短,我用Python 一.Hello World 初学一门新的语 ...
- Python课程笔记(十)
不陌生,之前学习一个开源SpringBoot项目,Mysql5.5更换到5.7搞得头疼. 数据库连接的坑之前写的IDEA系列连接会遇到的问题.课程代码 今天上课就主要学习了python如何连接mysq ...
- Python课程笔记(八)
一些简单的文件操作,学过linux的话理解感觉不会很难.课程代码 一.OS 目录方法 这个模块提供了一种方便的使用操作系统函数的方法 函数 说明 os.mkdir("path") ...
- Python课程笔记(六)
今天上课补上了上次未学完比较重点的鼠标和键盘事件,同时开始学习运用turtle进行绘图. 本次课程的代码: https://gitee.com/wang_ming_er/python_course_l ...
- Python课程笔记 (五)
今天主要学习图形用户界面,更多的还是要我们自己去实际操作,课仿佛上了一半就完了,分享一下课程(这里在SixthClass)的源码: https://gitee.com/wang_ming_er/pyt ...
- python 学习笔记九 队列,异步IO
queue (队列) 队列是为线程安全使用的. 1.先入先出 import queue #测试定义类传入队列 class Foo(object): def __init__(self,n): self ...
- python学习笔记(九)、模块
1 模块 使用import 语句从外部导入模块信息,python提供了很大内置模块.当你导入模块时,你会发现其所在目录中,除源代码文件外,还新建了一个名为__pycache__的子目录(在较旧的Pyt ...
- python学习笔记九——序列
4.4 序列 序列是具有索引和切片能力的集合.元组.列表和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力,因此元组.列表和字符串都属于序列.序列索引功能演示: tuple=(&quo ...
随机推荐
- 三剑客之sed编辑器 基操
目录: 一.sed编辑器 二.打印内容 三.使用地址 四.删除行 五.替换 六.插入 一.sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流. sed ...
- RSA及其证明 [原创]
描述RSA的实现步骤介绍文章非常多,但说明并证明其原理,并进而讨论为什么这样设计的文章不多.本人才疏学浅,不敢说理解了R.S.A.三位泰斗的设计初衷,简单就自己的理解写一写,博大家一笑. 以下原创内容 ...
- 尚硅谷Java高级笔记
尚硅谷Java高级笔记 idea的使用: 一些小区别: 其他细节参考idea配置pdf 多线程: 基本概念: 多线程的优点: 何时需要多线程: 线程的创建和使用: 创建多线程的第一种方式: /** * ...
- java.net.NoRouteToHostException: 无法指定被请求的地址
今天压力测试时, 刚开始出现了很多异常, 都是 java.net.NoRouteToHostException: Cannot assign requested address. 经网上查资料, 是 ...
- SQL注入与burPsuit工具介绍
sql注入原理 原理:用户输入不可控,用户输入导致了sql语义发生了改变 用户输入不可控:网站不能控制普通用户的输入 sql语义发生变化: 动态网页介绍: 网站数据请求 脚本语言:解释类语言,如,后端 ...
- 驱动IO模型-select
新人学习,欢迎指正 部分select.c代码 应用层 select(maxfd+1,&rfds,NULL,NULL,NULL); -------------------(系统调用)------ ...
- 洛谷P1803——凌乱的yyy(贪心)
题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加几个比赛. 由于yyy是蒟蒻,如果要参加 ...
- Linux系列(16) - 其他帮助命令
总结 如何判断一个命令是不是shell内部自带命令 使用命令whereis,whereis可以用来判断一个命令是否是shell内部命令: ls在/bin/下面有可执行文件,说明ls命令不是shell内 ...
- Redis限流
在电商开发过程中,我们很多地方需要做限流,有的是从Nginx上面做限流,有的是从代码层面限流等,这里我们就是从代码层面用Redis计数器做限流,这里我们用C#语言来编写,且用特性(过滤器,拦截器)的形 ...
- 关于spring boot+maven项目大面积报红
有时候我们使用git拉取代码,首先代码本身是没有任何问题的,但我们拉取的代码却大面积报红,模块间的类显示无法加载上方导进来的包一片灰, 代码部分大面积报红,在代码可以确定没问题的情况下,可这样操作: ...