工作和学习中,经常需要对一个Excel文件中的记录进行删除。今天和大家一起学习,如何在一个文件中删除其他文件中存在的记录。

问题:第一个Excel文件存储了学生信息,如“表1”所示,包括姓名、学号、年级、性别、年龄、班级。第二个Excel文件存储了第一小组学生的信息,如“表2”所示,字段和表一相同。

请编程,将所有非第一小组的学生信息,存到新文件result.xls中。

表1

表2

解决方案
分析:由于学号是唯一的,可以先从第一小组学生信息表(表2)中读取学生的学号存在字典中,然后针对要处理的学生信息表(表1)中每条记录,依次判断学号是否在字典中出现。如果未出现,则该学生非第一小组学生,将记录写入到结果文件。

步骤1: 编写函数read_student_id,实现从第一小组学生信息表文件中读取学生学号,存入到字典结构中,其key存储为学号。

import xlrd  # 引入xlrd库,用于读excel文件
import xlwt # 引入xlwt库,用于写excel文件def read_student_id(group1_student_file):data = xlrd.open_workbook(group1_student_file) # 打开第一小组学生信息表excel文件table = data.sheets()[0] # 获得excel文件的第一个sheetres_dict = {} # 第一小组学生学号字典,key是学号,value是True(字典主要为存储学号,value可以随意赋值为其他字段值、空字符串、布尔值True等)id_col= 1 # 学号字段对应的列 for row in range(table.nrows): # 遍历每行数据student_id=table.cell_value(row, id_col)  #得到学号res_dict[student_id] = True # 字典的key设置学号, value设置为布尔值Truereturn res_dict # 返回第一小组学生学号字典

步骤2: 编写函数delete_record,实现功能:针对要处理的学生信息表中每条记录,依次判断学号是否在字典(第一小组学生学号字典)中出现。若未出现,将记录写入到结果文件result.xls

def delete_record(student_info_file, group1_student_file, res_file):group_one_student_id_dict = read_student_id(group1_student_file) # 从第一小组学生信息表中读取学号,存入字典print(group_one_student_id_dict) # 打印存储第一小组学生学号的字典data = xlrd.open_workbook(student_info_file) # 打开学生信息表excel文件table = data.sheets()[0] # 获得excel文件的第一个sheetxls = xlwt.Workbook()  # 创建一个excel工作簿sheet = xls.add_sheet("Sheet1")  # 工作簿中增加一个工作表num_cols = 6 # 原文件列数id_col= 1 # 学号字段对应的列res_row = 0 # 下一个元素写入到结果文件第几行for row in range(table.nrows): # 遍历每一行student_id = table.cell_value(row, id_col) # 得到学生学号if student_id not in group_one_student_id_dict: # 学号在第一小组学生信息表中不存在,则写入该学生信息到结果文件print(student_id) # 打印学生学号for col in range(num_cols):  # 遍历每个字段sheet.write(res_row , col,  table.cell_value(row, col)) # 写入字段到结果文件res_row += 1 # 更新下一个元素在结果文件中放的行索引xls.save(res_file) # 将工作簿内容存储在res_file文件

步骤3: 初始化要处理的学生信息表路径、第一小组学生信息表路径、结果文件路径,并调用函数delete_record,执行函数逻辑。

if __name__ == '__main__':student_info_file = "D:\\program\\data\\学生信息表2.xls"  # 学生信息表文件路径group_one_student_info_file = "D:\\program\\data\\第一小组学生信息.xls"  # 第一小组学生信息表文件路径res_file = "D:\\program\\data\\result.xls"  # 结果文件路径delete_record(student_info_file, group_one_student_info_file, res_file)  # 调用delete_record函数,将非第一小组的学生信息,存到结果文件

实践1:理解上述3个步骤,并在自己电脑上执行代码和观察结果
提示:执行程序后,打开结果文件“result.xls”,查看结果是否和表3一致

表3

22. 处理Excel文件-删除在其他文件中存在的记录相关推荐

  1. 软硬链接、文件删除原理、linux中的三种时间、chkconfig优化

    第1章 软硬链接 1.1 硬链接 1.1.1 含义 多个文件拥有相同的inode号码 硬链接即文件的多个入口 1.1.2 作用 防止你误删除文件 1.1.3 如何创建硬链接 ln 命令,前面是源文件  ...

  2. linux文件删除机制,Linux 文件删除机制

    Linux 是通过 link 的数量来控制文件删除,只有当一个文件不存在任何 link 的时候,这个文件才会被删除.每个文件都有 2 个 link 计数器-- i_count 和 i_nlink.i_ ...

  3. android 文件删除命令大全,Android中删除sdcard里文件的命令

    Android中删除sdcard里文件的命令 有时我们需要删除android模拟器或手机上的sd卡文件,特别是模拟器上的,这时我们就需要借助于一些命令来帮助我们删除文件. 复制代码 代码如下: #重新 ...

  4. 上传文件删除上传文件——前端layui

    一.添加页面 添加页面代码 <div class="layui-form-item-row" style="margin-top: 10px;">& ...

  5. 删除windows搜索框中的搜索记录

    Vista和Win7的即时搜索功能确实给用户带来了方便,但是很多人不知道如何删除资源管理器搜索栏中的历史记录,这里分享个方法给大家. 鼠标点击搜索栏,如图,出现搜索过的历史记录. 把鼠标指向想要删除的 ...

  6. linux多个文件删除重复行,shell中删除文件中重复行的方法

    Linux下文本处理工具很丰富很强大,例如这样一个文件: cat log www.jb51.net 192.168.1.1 www.jb51.net 192.168.1.1 www.jb51.net ...

  7. U盘文件删除不掉文件被占用360强力删除后变成一串数字--解决办法

    u盘中文件夹无法删除的解决方法: 把U盘插入电脑,并打开"计算机". 选中u盘,然后右键–属性. 在弹出的对话框选择"工具"选项卡,并选择"查错&qu ...

  8. 计算机右键无法新建excel,右键新建中没有excel怎么删除_右键新建中没有excel怎么办...

    [www.gpsvo.com--电脑安全] 在电脑中,想要点击鼠标右键新建一个excel表格时,却没有这个程序,怎么办?下面随小编一起来看看吧. 右键新建中没有excel的解决方法1 同时按下wind ...

  9. php任意文件删除漏洞,phpshe后台任意文件删除漏洞及getshell | CN-SEC 中文网

    摘要 phpshe是一个开源商城程序,程序在前台入库的地方都用了pe_dbhold函数(mysql_real_escape_string,htmlspecialchars过滤),虽然用的是全局变量注册 ...

最新文章

  1. F - CRB and String HDU - 5414
  2. 液晶OCM12864,结构体,枚举,指针,规范化和模块化编程
  3. jackson stax2-api
  4. 围观窗体与组件03 - 零基础入门学习Delphi25
  5. android中对sd卡的 操作文件问题 创建目录 创建文件到指定目录
  6. css中图片有缩放和转动效果
  7. 面趣 | 据说这道烧脑的微软面试题很奇葩,你来试试?
  8. 【硬 盘】故障分析与诊断
  9. 2021-06-09反射的类型方法
  10. C/C++[PAT B level 1036]图形输出
  11. matlab指数分布拟合,如何使用matlab拟合指数分布函数?
  12. UReport2导出word报错
  13. 《Qt 5/PyQt 5实战指南》目录
  14. 「Go工具箱」一个能下载各种视频的开源工具
  15. 在电脑上如何快速制作一寸照片?在线一键制作工具推荐给你
  16. winserver2012设置开机自启动
  17. 计算机二级web最全真题题库下载
  18. Admob激励视频广告(rewarded ad)的服务器端验证(server-side )的疑问
  19. Android Studio集成NDK开发环境
  20. 解决Field xxService in x.controller.x required a bean of type ‘x.service.x‘ that could no be found的方法

热门文章

  1. 8.用神经网络破解验证码
  2. Python网络爬虫8 - 爬取彼岸图网美图
  3. [生存志] 第139节 汉书地理作志
  4. 解除封印 可以写博客啦
  5. godot 角色脚步声代码
  6. 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 创建 Qt 桌面程序 | 构建并运行 Qt 桌面程序 )
  7. 【毕业设计】python+opencv+深度学习实现二维码识别
  8. react之onChange事件
  9. 数据处理----特征(一)
  10. win10输入法选字框消失的解决办法