读书人

【python】怎么替换文件中的某一行

发布时间: 2012-09-07 10:38:15 作者: rapoo

【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())) 

读书人网 >perl python

热点推荐