在文本文件中删除和插入行

4 投票
6 回答
15751 浏览
提问于 2025-04-15 19:32

我有一个文本文件,内容如下:

first line  
second line  
third line  
forth line  
fifth line  
sixth line

我想把第三和第四行替换成三行新的内容。这样,上面的内容就会变成:

first line  
second line  
new line1  
new line2  
new line3    
fifth line  
sixth line

我该如何用Python来实现这个呢?

6 个回答

3

把整个文件读成一行一行的列表,然后用你想删除的行替换成一个新的行列表:

f = open('file.txt')
data = f.readlines()
f.close()
data[2:4] = [
    'new line1\n',
    'new line2\n',
    'new line3\n']
f = open('processed.txt','w')
f.writelines(data)
f.close()

注意,列表的切片是从零开始的,[2:4]的意思是“从第2个元素开始,到第4个元素之前的所有元素”。

4
import fileinput
myinsert="""new line1\nnew line2\nnew line3"""
for line in fileinput.input("file",inplace=1):
    linenum=fileinput.lineno()
    if linenum==1 or linenum>4 : 
        line=line.rstrip()
    if linenum==2:
        line=line+myinsert
    print line
import os
myinsert=["new line3\n","new line2\n","new line1\n"]
data=open("file").readlines()
data[2:4]=""
for i in myinsert:data.insert(2,i)
open("outfile","w").write(''.join(data))
os.rename("outfile","file)

或者如果你的文件不太大,

7

对于python2.6

with open("file1") as infile:
    with open("file2","w") as outfile:
        for i,line in enumerate(infile):
            if i==2:
                # 3rd line
                outfile.write("new line1\n")
                outfile.write("new line2\n")
                outfile.write("new line3\n")
            elif i==3:
                # 4th line
                pass
            else:
                outfile.write(line)

对于python3.1

with open("file1") as infile, open("file2","w") as outfile:
    for i,line in enumerate(infile):
        if i==2:
            # 3rd line
            outfile.write("new line1\n")
            outfile.write("new line2\n")
            outfile.write("new line3\n")
        elif i==3:
            # 4th line
            pass
        else:
            outfile.write(line)

撰写回答