+ -
当前位置:首页 → 问答吧 → 【python】如何替换文件中的某一行

【python】如何替换文件中的某一行

时间:2011-03-10

来源:互联网

我需要实现这样一个功能:在某个文件中将其中某一行替换掉,此行的关键字是唯一的。

我的思路有两种
第一种是读到此行,直接替换
第二种是将此文件写入到另一个文件中,在中途遇到关键字,则替换。
例如 源文件:c:\a.txt,目标,将"world"替换为"python"

第一种的代码是:
Python code

import re
import os

f=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 re
import os


output = []
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()这个函数可以。。。

作者: jiaoxiaogu   发布时间: 2011-03-10

因为append只能往最后加,不能替换,是否可以在append的数组中做替换呢?

作者: jiaoxiaogu   发布时间: 2011-03-10