python里怎样替换,修改文本内容

Python010

python里怎样替换,修改文本内容,第1张

当我们读取文件内容后,如果想要修改文件中的某一行或者某一个位置的内容,在python中是没有办法直接实现的,如果想要实现这样的操作只能先把文件所有的内容全部读取出来,然后进行匹配修改后写入到新的文件中。

实例代码如下所示:

# 打开旧文件

f = open('file_text.txt','r',encoding='utf-8')

# 打开新文件

f_new = open('file_text_bak.txt','w',encoding='utf-8')

# 循环读取旧文件

for line in f:

   # 进行判断

   if "Good day is good day" in line:

       line = line.replace('Good day is good day','hello,yanyan')

   # 如果不符合就正常的将文件中的内容读取并且输出到新文件中

   f_new.write(line)

f.close()

f_new.close()

备注:

1. 旧文件的内容

hello,world

yanyan is good girl

Good day is good day

2. 新文件在代码执行后的内容

hello,world

yanyan is good girl

hello,yanyan

3. 需要注意的是权限的问题,对于旧文件必须要有读取权限,对于新的文件必须要有写入权限

读文件的模式有很多种不一一列举,r+表示打开一个文件用于读写。文件指针将会放在文件的开头。

def readFile(path):

#R

with open(path,"r+") as f:

for line in f:

print(line)

f.close()

print("读文件完成")

path="D:\\tmp\\manim\\file\\1.txt"

readFile(path)

查找字符串位置,str.find(target) 返回起始点位置如果是-1则表示不存在

"123WWW".find("WWW")

文件指针偏移到指定位置

#文件路径,原字符串,要替换成的目标字符串

def replaceText(filePath,sourceText,targetText):

if(len(sourceText)!=len(targetText)):

raise Exception("原始字符串长度与目标字符串不符,容易覆盖有用信息", sourceText,targetText)

with open(filePath,'r+') as f:

line=f.readline()

index=0

# 遇到中间空行的可以自行观察并不是空字符串

while ( line!=""):

print(line)

# 本行内字符串所在位置

windex=line.find(sourceText)

if(windex!=-1):

print("windex={}".format(windex))

print("当前位置:{},替换内容起点:{}".format(f.tell(),index+windex))

f.seek(index+windex)

f.write(targetText)

# f.flush()

f.seek(index)

# 返回当前文件指针,应该是新一行的开始位置

index=f.tell()

line=f.readline()

f.close()

print("文件修改完毕")

其实python有解析xml的模块

只是你这个xml文件太简单,字符串处理就够了

还是一样,按行搜索,加个flag,读到b并且attr=2是flag=1

如果flag=1且本行是<b2>就替换数值,flag=0

等循环完了,写入新文件就行