100个Python实用程序 - 2.根据条件删除excel中指定行

程序介绍

        之前帮朋友编写了一个脚本,他的需求是在一个数据大概有一万条记录的excel表格中删除符合要求的行,需要删除的记录从一个txt文档中获取。根据观察,发现可以根据银行账号这个字段判断该条记录是否在excel中存在。

编写步骤

根据上面的需求,我们程序需要做的任务主要有:

  • 从txt文档中提取银行账号字段;
  • 遍历excel文档,判断每一行的银行账号数据是否在txt文档存在,如果存在就删除该行;

我们一步一步用代码实现:

  1. 从txt文件中提取银行账号信息,保存在一个列表中

我们首先打开一个txt文档,因为该文档的编码是“UTF-16 LE”格式,所以在打开时必须指定编码格式为“UTF-16 LE”,之后将数据保存在一个列表lista中,最后通过列表推导式提取出自己需要的数据并保存在列表aa中。

    2. 在excel中删除指定的行

 

      我们首先打开excel文件并获取要操作的sheet页,定义一个变量row_n,之后遍历该sheet页里面的数据,当excel里面的数据在列表aa中存在时,使用delete_rows删掉该行数据,当不存在时row_n加1,当删除数据后,数据所处的行号是变化的,当删除数据时row_n不自动加1。

遍历完成后使用save方法保存数据。

 程序代码

import openpyxl as py
temp = open(file='D:\文档\耕地补贴失败.txt',mode='r',encoding='UTF-16 LE')
lista = temp.readlines()
aa = [1 if not li.__contains__('|') else li.split('|')[1].strip() for li in lista ]

wb = py.load_workbook('D:\文档\刘湾镇2021年农业补贴(上报专用).xlsx')
sheet = wb['Sheet1']
max = sheet.max_row
row_n = 1
for i in range(1,max+1):
    va = str(sheet[f'N{row_n}'].value).strip()
    if aa.__contains__(va):
        sheet.delete_rows(row_n)
    else:
        row_n = row_n + 1

wb.save(filename='D:\文档\刘湾镇2021年农业补贴(上报专用)_7.xlsx')
wb.close()

需要资料的微信公众号搜索 爱写代码的阿甘 关注获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值