需求:对Excel表格中的字符串进行多对多的批量替换,如:

被替换  : 替换为:
钢琴;小提琴;手风琴; 二胡;琵琶;古筝;
跑步 跳远

将目标表格中想替换掉的字符串(如上表左列),替换为上表右列中的字符串。其中右边有多个值时,采用随机替换(如不需随机替换,则使用多对一或一对一的表格即可,如第三行)

实现的大致思路如下:

用到的库如下:

from openpyxl import load_workbook as lw
import re
import random

openpyxl用于进行Excel表的读写操作;

re用于替换时使用正则表达式(使用str.replace()也可以)

random用于随机出字符串

一、分割字符串

def SplitString(sth):#按";"分割字符串,并去除末尾空白,返回为列表,用于处理要替换上去的字符串if not ";" in str(sth):return [str(sth)]lis=sth.split(";")if "" in lis:lis.remove("")return lis

测试结果:

>>>SplitString(1234)
['1234']
>>>SplitString("1234;5678;9101112;1314;")
['1234', '5678', '9101112', '1314']

通过分割字符串,可将从表格中读取到的元素分割为一个列表,便于后续进行替换

二、替换字符串

def ReplaceString(lisa,lisb,c):#字符串替换(只针对一行进行替换),参数1为要被替换的字符串列表,参数2为要替换上去的字符串列表,参数3为结果字符串for each in lisa:while each in c:c=re.sub(each,random.choice(lisb),c,1)#每次只进行一次替换,确保每次均为随机,不会出现重复return c

对一个单元格的字符串进行检索替换(替换内容为替换表的某一行)

测试结果:

>>>c="我喜欢踢足球,喜欢跑步,也喜欢钢琴、吉他和小提琴"
>>>lisa=["钢琴","吉他","小提琴"]
>>>lisb=["电子琴","贝斯","架子鼓"]
>>>ReplaceString(lisa,lisb,c)
'我喜欢踢足球,喜欢跑步,也喜欢贝斯、电子琴和贝斯'

以下为对一个单元格的字符串进行检索替换(替换内容为整张替换表)

def ReplaceSth(a,b,c):#字符串替换(针对整张替换表),替换一个单元格的字符串c=str(c)for i in range(len(a)):c=ReplaceString(a[i],b[i],c)return c

三、读取替换表,进行分割操作,存储为两个列表

def GetReplaceSth(reFileName,reSheetNum):#读取替换表,并对字符串进行分割处理操作,保存为列表a=[]b=[]replaceWork=lw(filename=reFileName)replaceSheet=replaceWork[replaceWork.sheetnames[reSheetNum-1]]#选择表格replaceSheet=replaceWork.active#激活表格reCell=replaceSheet["A"]#读取A列(要被替换的字符串)reedCell=replaceSheet["B"]#读取B列(要替换上去的字符串)for i in reCell:lisa=SplitString(i.value)a.append(lisa)for j in reedCell:lisb=SplitString(j.value)b.append(lisb)return a,b

传入文件名和要读取的第n个sheet

四、Main函数

#输入替换表名及第几张表
reFileName=input("请输入替换表名称(如果不是xlsx格式,请加上格式名):")
if not reFileName.endswith(".xls"):reFileName+=".xlsx"
reSheetNum=int(input("第几张表(第一张表就填1):"))
a,b=GetReplaceSth(reFileName,reSheetNum)#对替换表元素进行字符串分割处理,保存为列表#输入待替换表格名
reedFileName=input("请输入待替换的表格名称(如果不是xlsx格式,请加上格式名):")
if not reedFileName.endswith(".xls"):reedFileName+=".xlsx"
reedSheetNum=int(input("第几张表(第一张表就填1):"))#输入起始单元格与结束单元格(左上与右下)
start=input("请输入起始单元格序号(左上角):")
ends=input("请输入结束单元格序号(右下角):")#读取待替换表
replacedWork=lw(filename=reedFileName)
replacedSheet=replacedWork[replacedWork.sheetnames[reedSheetNum-1]]
replacedSheet=replacedWork.active#读取范围单元格
cells=replacedSheet[start+":"+ends]#对范围单元格进行替换操作
for i in cells:for j in i:ans=ReplaceSth(a,b,j.value)if str(j.value)!=ans:#只修改需要改动的单元格,对于不需要改动的单元格和空格不进行写入操作j.value=ans
replacedWork.save(filename="替换完成表.xlsx")#保存'''
#全局替换,不进行范围选择
for row in replacedSheet.rows:for cell in row:#遍历操作ans=ReplaceSth(a,b,cell.value)if str(cell.value)!=ans:#只修改需要改动的单元格,对于不需要改动的单元格和空格不进行写入操作cell.value=ans
replacedWork.save(filename="替换完成表.xlsx")#保存
'''

需输入表格名称(.xlsx格式可直接输入表格名,.xls需加后缀)和第几张表(正常读数,不需要从程序员的0开始2333)

完成替换后,另存为“替换完成表.xlsx”,可按需修改

测试结果:

替换表:

待替换表:

运行程序&输入:

结果:

五、结语

因为工作需要所以做了这个简单的功能,尽可能做得泛用了些。没有用可视化的GUI,自由度还不是很高。按需修改吧

用Python实现Excel表格的多对多批量替换相关推荐

  1. Python读取excel表格人员数据同时批量写入多个excel个人登记表

    背景:驻村期间需要将1张含有200多人的人员记录数据写入人员信息登记表中,1条记录对应一个人员信息登记表.如果复制粘贴肯定比较慢,所以当然使用Python来解决.涉及的字段其实有23个,因涉及其他问题 ...

  2. python处理excel表格大小-如何用python处理excel表格

    前面我们已经学到了很多Python在数学领域的应用,用Python编程可以轻松解决一些数学中的常见问题.当然Python的功能应用还远远不止于此,我们的很多日常工作也可以用Python来实现.今天南京 ...

  3. python导入excel表格-通过Python将Excel表格信息导入数据库

    前言 公司原采用Excel表格方式记录着服务器资产信息,随着业务的增加,相应的硬件资产也增加,同时物理机虚拟化出多台虚拟机,存在表格管理杂乱.变更资产信息不能及时相互同步, 为了紧跟时代的步伐,老大搞 ...

  4. 使用python用什么软件-Python读写Excel表格,就是这么简单粗暴又好用

    Python读写Excel表格,就是这么简单粗暴又好用 2019-04-18 13:45:31 11点赞 107收藏 1评论 最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开 ...

  5. python简单代码编写-python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel――xlrd 2.python写excel――xlwt 1.读excel数据,包括日期等数据 ...

  6. python读取excel表格-python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel--xlrd 2.python写excel--xlwt 1.读excel数据,包括日期等数据 ...

  7. python读取excel表格-python读取excel表格中的数据

    使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...

  8. python画柱状图和折线图-Python读取Excel表格,并同时画折线图和柱状图的方法

    今日给大家分享一个Python读取Excel表格,同时采用表格中的数值画图柱状图和折线图,这里只需要几行代码便可以实. 首先我们需要安装一个Excel操作的库xlrd,这个很简单,在安装Python后 ...

  9. python与excel表格-如何用python处理excel表格

    openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. 读取Excel文件 需要导入相关函数 from openpyxl import l ...

最新文章

  1. eclipse中Tomcat v8.0 Server at localhost failed to start解决以及安装方法
  2. Mysql源码学习——源码目录结构
  3. 交换机生成树协议配置
  4. java 网络序_Java使用网络字节序进行数据传输
  5. SCVMM 2012 R2---安装SCVMM 2012 R2服务器
  6. 自考计算机及应用心得体会,自考中文专业的心得体会
  7. luogu P3244 [HNOI2015]落忆枫音
  8. 在Windows 10上安装TensorFlow 2.2.0 RC4版
  9. css33d坐标系,CSS3-3D技术
  10. getOutputStream() has already been called for this response异常的原因和解决方法[转]
  11. 吉大计算机学院周柚,周柚
  12. android libpng16,Android原生(Native)C开发之六:libpng移植笔记
  13. 梯形图c语言编程比较,PLC编程语言梯形图与结构化文本的比较
  14. linux如何使用磁盘阵列卡,Linux的RAID磁盘阵列与阵列卡
  15. 《云边有个小卖部》的优秀读后感作文2100字
  16. 但愿人长久,千里共婵娟---众智云
  17. java的弱引用_理解Java中的弱引用(Weak Reference)
  18. uni-app 全局变量的几种实现方式
  19. Caffeine - Caches - Removal
  20. VUE之组件(Props特性深析)

热门文章

  1. 什么是反向竞价?有哪些优劣势
  2. 音质比较好的蓝牙耳机有哪些?四款音质好的蓝牙耳机推荐
  3. 【用单链表管理商品库存表】
  4. windows远程linux的工具
  5. Lua内存泄露检查和性能检测工具
  6. 2019年4月份整理的Unity3D 20个实用插件-免费下载
  7. 新建SVN仓库:svnadmin create
  8. 3-wireshark网络安全分析——ARP欺骗攻击
  9. 高度塌陷问题及解决方法
  10. PJBLOG首页调用