您的位置:首页 > 其它

正则搜索内容并自定义替换

2011-07-14 11:54 295 查看
#正则搜索内容并自定义替换
#使用自行修改
#没替换成功常见错误
#没找到要替换的字符串
#正则式不对

import re

#1 use number serial to replace
#2 use define word in file to replace
#3 use constent word to replace
replace_methed=3

#input text
sourcefile="D:\\test\\rep.txt"
#output text
destfile="D:\\test\\rep_1.txt"
srcf=open(sourcefile,"r")

#1
reptag=0

#2
f2=open("D:\\test\\gg.txt","r")
replists=f2.readlines()
replists_pos=0

#3 constent string to replace
repstring="example string"

#compile the regex of searching string
myre=re.compile("(\n)",re.I | re.DOTALL | re.MULTILINE)

#source content
content=srcf.read()

#test content
#content="xxxxxasdfa sdfsab sdfklsajfa asdfkdjsflb"

dd=myre.search(content)
newcontent=""
while dd!=None:
newcontent+=content[:dd.start()]
for ddi in range(1,len(dd.groups())+1):
if(ddi==1):
if(replace_methed==1):
newcontent+=str(reptag)
reptag+=1
elif(replace_methed==2):
if(replists_pos<len(replists)):
if(replists[replists_pos].endswith("\n")):
newcontent+=replists[replists_pos][:-1]
else:
newcontent+=replists[replists_pos]
replists_pos+=1
else:
replists_pos=0
if(replists[replists_pos].endswith("\n")):
newcontent+=replists[replists_pos][:-1]
else:
newcontent+=replists[replists_pos]
replists_pos+=1
elif(replace_methed==3):
newcontent+=repstring
reptag+=1
else:
newcontent+=dd.group(ddi)
content=content[dd.end():]
dd=myre.search(content)
if(dd==None):
newcontent+=content
destf=open(destfile,"w")
destf.write(newcontent)
destf.close()
srcf.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: