python用xlrd做学生成绩管理_从零基础开始用python处理excel数据(xlrd、xlwt)

我的第一篇Blog!本来想在520发的!

动动手,记录一下学习过程!

心之所向,无问西东!

一、读取Excel工作簿

-准备

1.pip安装+import导入 第三方库 xlrd、xlwt

#安装 xlrd、xlwtpip install xlrdpip install xlwt#导入 xlrd、xlwtimport xlrd #(读取)import xlwt #(写入)1

2

3

4

5

6

7

8

- 基础知识

1.读取工作薄import xlrdwb = xlrd.open_workbook('工作簿.xls') #读取工作簿1

2

3

4

2.读取工作薄下所有工作表

wsobj=wb.sheets()#读取工作薄下所有工作表对象wsname=wb.sheet_names()#读取工作薄下所有工作表标名称1

2

3

4

5

3.读取指定工作表对象ws1=wb.sheet_by_name('工作表名')#按指定名称,读取工作表对象-方法一 (常用)ws2=wb.sheet_by_index(1)#按指定序号,读取工作表对象-方法二ws3=wb.sheet()[1]#按指定序号,读取工作表对象-方法三1

2

3

4

5

6

7

- 实例引入

191692567_1_20200530024510646

以该Excel为例,理解上述内容

#打印test工作薄下所有工作表名称import xlrdwb = xlrd.open_workbook('test.xls')ws = wb.sheets()wsname = wb.sheet_names()print(wsname)1

2

3

4

5

6打印结果:['数据1', '数据2', '数据3']1

2

1.打印test工作薄下所有工作表对象及其名称

import xlrdwb = xlrd.open_workbook('test.xls')wsobj = wb.sheets()wsname = wb.sheet_names()print(wsobj)print(wsname)1

2

3

4

5

6打印结果:[, , ]['数据1', '数据2', '数据3']1

2

3

2.三种方法打印指定工作表对象及名称

import xlrdwb = xlrd.open_workbook('test.xls')ws = wb.sheets()wsname = wb.sheet_names()ws1 = wb.sheet_by_name('数据1')ws2=wb.sheet_by_index(0)ws3=wb.sheets()[0]1

2

3

4

5

6

7print(ws1)#打印结果#1

2

3

4

print(ws2)print(ws2.name)#打印结果##数据11

2

3

4

5

6print(ws3)print(ws3.name)#打印结果:##数据11

2

3

4

5

6

二、读取excel行和列

-基础知识

import xlrdws = xlrd.open_workbook('工作簿名.xls').sheet_by_name('工作表名')#获取工作表对象crow = ws.nrows#获取行数ccol = ws.ncools#获取列数1

2

3

4row_date = ws.row_values(行号)#获取指定行数据col_date = ws.col_values(列号)#获取指定列数据1

2

cell_date_1 = ws.cell_value(行号,列号)#获取单元格数据cell_date_2 = ws.cell(行号,列号).value#获取单元格数据1

2

-实例引入

191692567_2_20200530024510818

- 代码实现import xlrdws = xlrd.open_workbook('test.xls').sheet_by_name('数据1')#获取工作表对象crow = ws.nrows#获取行数ccol = ws.ncols#获取列数print('该表有',crow,'行')print('该表有',ccol,'列')1

2

3

4

5

6

7打印结果

该表有 6 行

该表有 3 列

import xlrdws = xlrd.open_workbook('test.xls').sheet_by_name('数据1')#获取工作表对象row_date = ws.row_values(0)#获取指定行数据print(row_date)1

2

3

4

5打印结果

[1.0, ‘张三’, 19990101.0]import xlrdws = xlrd.open_workbook('test.xls').sheet_by_name('数据1')#获取工作表对象col_date = ws.col_values(1)#获取指定行数据print(col_date)1

2

3

4

5打印结果

[‘张三’, ‘李四’, ‘王二’, ‘麻子’, ‘周五’, ‘郑王’]

#写法import xlrdws = xlrd.open_workbook('test.xls').sheet_by_name('数据1')#获取工作表对象cell_date_1 = ws.cell_value(0,1)#获取单元格数据print(cell_date_1)#张三cell_date_2 = ws.cell(0,1).value#获取单元格数据print(cell_date_2)#张三1

2

3

4

5

6

7

8

9

10

11

三、创建工作薄、工作表和写入单元格

-基础知识import xlwtnwb = xlwt.Workbook(encoding='UTF-8')#新建工作簿nws = nwb.add_sheet('工作表名')#添加工作表nws.write(1,2,'要写入的值')#写入单元格nwb.save('工作簿名.xls')1

2

3

4

5

import xlwtnwb = xlwt.Workbook(encoding='UTF-8')#新建工作簿nws = nwb.add_sheet('成绩表')#添加工作表nws.write(1,2,'9999')#写入单元格nwb.save('成绩表.xls')1

2

3

4

5

四、for 循环

-基础知识for s in range(10,20,1): print(s)1

2打印结果

10

11

12

13

14

15

16

17

18

19

#拓展score = int(input('请输入分数:'))if score >= 90: print('good')else: print('not bad')#展示>请输入分数:93>good1

2

3

4

5

6

7

8

9

-实例引入

案例一

191692567_3_20200530024510974import xlrd,xlwtwb = xlrd.open_workbook('成绩表.xls')ws = wb.sheet_by_name('成绩表')n = 0while n < ws.nrows-1: n+=1 #print(ws.cell_value(n,0),ws.cell_value(n,1)) if ws.cell_value(n,0) == '李四': print(ws.cell_value(n,1)) #打印结果58.01

2

3

4

5

6

7

8

9

10

11

12

案例二

191692567_4_20200530024511115

import xlrd,xlwtwb = xlrd.open_workbook('成绩表.xls')ws = wb.sheet_by_name('成绩表')nwb = xlwt.Workbook(encoding = 'UTF-8')nws = nwb.add_sheet('成绩表')n,m = 0,0while n < ws.nrows-1: n+=1 if ws.cell_value(n,1)>=60 and ws.cell_value(n,2)>=60: m+=1 nws.write(m,0,ws.cell_value(n,0)) nws.write(m,1,ws.cell_value(n,1)) nws.write(m,2,ws.cell_value(n,2))nwb.save('筛选结果.xls')1

2

3

4

5

6

7

8

9

10

11

12

13

14

五、字符串

-字符串的切片字符串是常见的数据类型,Python中的字符串是不能修改的,只能做提取、拆分合并重组等操作s = 'WHO我是谁'print(s[:3])#从左计算,从开头提取到指定位置print(s[3:])#从左计算,从指定位置到结束print(s[1:3])#从左计算,从指定起始位置到指定终止位置print(s[-3:-1])#从右计算,指定的起始位置到指定的终止位置print(s[-3:])#从右计算,指定的起始位置到结束print(s[:])#提取所有字符串print(s[3:-1])#打印结果WHO我是谁HO我是我是谁WHO我是谁我是1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

-字符串的查找

indexindex 方法用于从字符串中找出某一个对象第一个匹配项的索引位置,如果查找的字符串不存在则会报出一个异常。

str.index(sub[,start=0[,end=len(str)]])str父字符串sub指定检索的子字符串start 可选参数,开始索引,默认为0.(可单独指定)end 可选参数,结束索引,默认为字符串长度.(不能单独指定)1

2

3

4

5

6s = 'A组78,B组87,C组88,D组95,B组90'print(s.index('A组'))print(s.index('B组',6))print(s.index('B组',5,7))#02051

2

3

4

5

6

7

8

9

-字符串的计数

写入文件

import xlwtnwb = xlwt.Workbook(encoding = 'UTF-8')nws = nwb.add_sheet('统计')nwb.save('字符串count查找.xls')1

2

3

4

count

191692567_5_20200530024511427import xlrd,xlwtfrom xlutils.copy import copyws = xlrd.open_workbook('字符串count查找.xls')ws = wb.sheet_by_name('统计')#重写统计表nwb=copy(wb)nws=nwb.get_sheet('统计')#提取第一列数据n=0while n

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

-字符串的替换replace 方法用于把字符串中指定的旧字符串替换成指定的字符串,如果指定count可选参数则替换指定的次数,默认为全部替换str.replace(old,new[,count=str.count(old)])

old旧的字符串

new新的字符串

replace

import xlwtnwb = xlwt.Workbook(encoding='utf-8')nws = nwb.add_sheet('会计科目表')#nrow = ws.nrows #共有多少列(以最后一列计算,比如有多列,一列长度为8,一列为7,则显示8)#ncol = ws.ncols #有多少行nwb.save('account.xls')1

2

3

4

5

6s = 'A-优秀;B-良好;C-优秀;D-优秀'print(s.replace('优秀','(good)'))print(s.replace('优秀','(good)',1))print(s.replace('优秀','(good)',2))1

2

3

4

#打印结果A-(good);B-良好;C-(good);D-(good)A-(good);B-良好;C-优秀;D-优秀A-(good);B-良好;C-(good);D-优秀1

2

3

4

-字符串拆分和合并

splitsplit方法拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)

语法结构:str.split(str='',num=string.count(str))str 表示为分隔符,默认为空格,但是不能为空(‘’)。若字符串中没有分隔符,则把整个字符串作为一个列表元素。

num 表示分隔次数。如果存在参数num,则近分隔成num+1个字符串,并且每个字符串可以赋予一个新的变量s = '张三、李 四、王二 麻子、小明'print(s.split())print(s.split('、 '))print(s.split('、 ',2))print(s.split('、 ',3))#打印结果['张三、李', '四、王二', '麻子、小明']['张三、李 四、王二 麻子、小明']['张三、李 四、王二 麻子、小明']['张三、李 四、王二 麻子、小明']1

2

3

4

5

6

7

8

9

10

11

joinjoin()方法用于将序列中元素以指定的字符串连接生产一个新的字符串。

语法结构:str.join(sequence)

str 分隔符 可以为空

sequence 要连接的元素序列、字符串、元组、字典

i=['a','b','c']print('-'.join(i))print('\t'.join(i))#打印结果a-b-ca b c1

2

3

4

5

6

7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值