python基础_文件操作实现全文或单行替换的方法
python修改文件时,使用w模式会将原本的文件清空/覆盖。可以先用读(r)的方式打开,写到内存中,然后再用写(w)的方式打开。
1、替换文本中的taste为tasting
YesterdaywhenIwasyoung 昨日当我年少轻狂 Thetasteoflifewassweet 生命的滋味是甜的 Asrainuponmytongue
#将文件读取到内存中 withopen("./fileread.txt","r",encoding="utf-8")asf: lines=f.readlines() #写的方式打开文件 withopen("./fileread.txt","w",encoding="utf-8")asf_w: forlineinlines: if"taste"inline: #替换 line=line.replace("taste","tasting") f_w.write(line)
2、全文中搜索替换或者单行替换
#文本内容 YesterdaywhenIwasyoung 昨日当我年少轻狂 Thetasteoflifewassweet 生命的滋味是甜的 Asrainuponmytongue taste taste taste taste
#定义一个函数,带有4个参数 #x表示要更新的文件名称 #y表示要被替换的内容 #z表示替换后的内容 #s默认参数为1表示只替换第一个匹配到的字符串 #如果参数为s='g'则表示全文替换 defstring_switch(x,y,z,s=1): withopen(x,"r",encoding="utf-8")asf: #readlines以列表的形式将文件读出 lines=f.readlines() withopen(x,"w",encoding="utf-8")asf_w: #定义一个数字,用来记录在读取文件时在列表中的位置 n=0 #默认选项,只替换第一次匹配到的行中的字符串 ifs==1: forlineinlines: ifyinline: line=line.replace(y,z) f_w.write(line) n+=1 break f_w.write(line) n+=1 #将剩余的文本内容继续输出 foriinrange(n,len(lines)): f_w.write(lines[i]) #全局匹配替换 elifs=='g': forlineinlines: ifyinline: line=line.replace(y,z) f_w.write(line)
测试
1)默认参数1,只替换匹配到的第一行
string_switch("fileread.txt","taste","tasting") #结果 YesterdaywhenIwasyoung 昨日当我年少轻狂 Thetastingoflifewassweet 生命的滋味是甜的 Asrainuponmytongue taste taste taste taste
2)全局替换
string_switch("fileread.txt","taste","tasting","g") #结果 YesterdaywhenIwasyoung 昨日当我年少轻狂 Thetastingoflifewassweet 生命的滋味是甜的 Asrainuponmytongue tasting tasting tasting tasting
以上这篇python基础_文件操作实现全文或单行替换的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。