【python】如何替换文件中的某一行
我需要实现这样一个功能:在某个文件中将其中某一行替换掉,此行的关键字是唯一的。
我的思路有两种
第一种是读到此行,直接替换
第二种是将此文件写入到另一个文件中,在中途遇到关键字,则替换。
例如 源文件:c:\a.txt,目标,将"world"替换为"python"
第一种的代码是:
- Python code
import reimport osf=open(r"c:\a.txt", "r+")for line in f.readlines(): if line.find("world") >= 0: s = line.replace("world", "python") f.writelines(s)
在这个代码中,我只实现了将原句替换后写入文件,但是有两重要的功能没实现,就是删除此行,另一个就是每次都是写到最后一行,不能在原来行的位置。。。
我在网上搜了下,说open file的参数有一个是"r+a"表示在当前内容尾部写内容,但是我试了。。。发现编译错误。。。
第二种思路结果跟第一种的一样。。。没有删除行,且出现在了末尾。。。
- Python code
import reimport osoutput = []d_path = r"c:\a1.txt"f=open(r"c:\a.txt")for i in f.readlines(): output.append(i)f.close()for i in output: if i.find("world") >= 0: s = i.replace("world", "python") output.append(s) print output f=open(d_path, "w")f.writelines(output)f.close
应该如何做,才能删除行,且让替代的字符串在原来删除行的位置。。。。
ps,如果需要行号的话,fileinput.filelineno()这个函数可以。。。
[解决办法]
- Python code
open('2', 'w').write(re.sub(r'world', 'python', open('1').read()))