在我们日常办公经常遇到“替换”,比较常见是把文件中的英文小写a替换成英文大写,把拼音:beijing替换成中文:北京。有时候不仅是单个英文符号,还需要替换好几个词。还有一种情况不太常见,但是一碰到就很棘手,那就是根据数字范围进行替换,比如“60分以下”替换成“差”,“61-80 岁”替换成“好”,“81-100 岁”替换成“优秀”。
今天我们来讲讲,如何快速的通过Python代码实现批量替换。
Python实现一对一的替换
学过Python语言的都知道,在Python中有个replace()函数来实现了替换功能。这个内置的函数可以实现匹配关键字进行替换,将所有匹配到的字符串都进行替换。
我们来看一个例子进行进一步的了解:
string1="aaa小码农和农夫bbb小码农和农夫ccc"
string2=string1.replace("小码农", "码农")
print(string2)
string3="aaa小码农和农夫bbb小码农和农夫ccc"
string4=string3.replace("小码农和农夫", "码农", 1)
print(string4)
运行结果
aaa码农和农夫bbb码农和农夫ccc
aaa码农bbb小码农和农夫ccc
我们来具体了解一下replace()函数实现替换的原理,简单来说就是从字符串中从头到尾,逐个和replace()函数中第一个参数进行比较,如果找到相同的字符串,用replace()函数中的第二个参数的字符串进行替换。
如果你仔细观察,你会发现第6条语句比第2条语句多了一个参数,即replace()函数的第三个参数,它用来表示替换次数。如果为1表示只替换一次,2表示替换两次等等。
我们把这种逐一比对, 找到相同字符进行替换的操作, 称作“一对一替换”。
但是在实际中,往往比上面例子的情况复杂的多,如果采用一对一替换操作,那么会导致代码过多。例如将“AaACcDDbBb”中A,B,C替换成小写的a,b,c。
# 需要更多的replace()匹配更多的符号
string5='AaACcDDbBb'
string6=string5.replace('A', 'a')
string6=string6.replace('C', 'c')
string6=string6.replace('B', 'b')
print(string6)
aaaccDDbbb
上述代码中,我们使用了三个replace函数进行替换替换的英文,那有没有其他方式不使用多个replace函数呢?
答案是肯定的替换的英文,我们看看如何将拼音的省份替换成中文,例如“beijing”替换成“北京市”,“GUANGDONG”替换成“广东省”。如果你采用replace函数进行,那么需要写的replace函数过多,没有达到Python自动化的目的,提高工作效率。对于z情况,那怎么实现批量替换呢?这里采用两种方式:第一种:字典 + 自定义函数,另一种是用逻辑判断 + 自定义函数,这两种方式都能实现替代 replace() 函数。
Python实现多对一的替换
第一种:字典 + 自定义函数
# 保存映射关系的函数,函数的主要功能是通过字典实现的
def replace_city(city_name):
return {
"GUANGDONG":"广东省",
"HEBEI":"河北省",
"HUNAN":"湖南省",
"HANGZHOU":"杭州市"
}[city_name]
# 根据映射关系实现批量循环
# replace_multi函数的两个参数,第一个是要替换的城市的拼音,第二个是要替换的字符串。
def replace_multi(my_citys, replaced_string):
for pinyin_city in my_citys:
replaced_string = replaced_string.replace(
pinyin_city,replace_city(pinyin_city))
return replaced_string
# 哪些城市要替换
citys = ("GUANGDONG", "HUNAN")
# 需要替换的字符串
string1 = """
GUANGDONG,简称“粤”,中华人民共和国省级行政区,省会广州。
因古地名广信之东,故名“GUANGDONG”。位于南岭以南,南海之滨,
与香港、澳门、广西、HUNAN、江西及福建接壤,与海南隔海相望。"""
string2 = replace_multi(citys, string1)
print(string2)
广东省,简称“粤”,中华人民共和国省级行政区,省会广州。
因古地名广信之东,故名“广东省”。位于南岭以南,南海之滨,
与香港、澳门、广西、湖南省、江西及福建接壤,与海南隔海相望。
通过字典 + 自定义函数替换了重复使用replace情况,提高了代码的可读性。在实际工作中,要灵活使用。如果处理Excel某列字段的替换,我们可以先获取这列字段,然后变成字典形式,最后,进行替换和保存。代码不难,请自行编写。
第二种:逻辑判断 + 自定义函数
比如替换某班级的考试成绩,将“60分以下”替换成“差”,“61-80 岁”替换成“好”,“81-100 岁”替换成“优秀”。直接在Excel表中操作不难,但是当要替换100个班级并且都是单独Excel时,操作起来就不简单了。
我们看看如何通过逻辑判断 + 自定义函数来进行实现:
def score_replace(score):
if score > 0 and score 60 and score 80 and score <= 100:
return "优秀"
# 成绩
scores=[60,71,90,40]
# 用于保存替换后的成绩
scores_replace=[]
for i in scores:
scores_replace.append(score_replace(i))
# 输出
print(scores_replace)
['差', '好', '优秀', '差']
那么替换100个班级并且都是单独Excel情况,前面我们已经学习Excel的合并和拆分,我想编写程序应该不难了吧!欢迎你们把答案写在评论区。
如果你细心你会发现,这两种替换方式都使用了函数。那为什么要用函数呢?使用函数的好处:
小结
最后,要告诉你,在碰见要替换的实际情况时,不要只知道replace()函数,通过逻辑结构/字典+自定义函数方式进行间接替换也是一种好的选择。
限时特惠:本站每日持续更新海量展厅资源,一年会员只需29.9元,全站资源免费下载
站长微信:zhanting688