如何根据另一个文件中的下一行在一个文件的当前行上执行操作

时间:2019-05-14 07:49:18

标签: python-3.x

我正在尝试学习Python中的文件处理。我需要使用以下更改创建一个新文件。 我有以下输入文件:-

输入文件:-

Hello World!!!    
foo bar qss     
> foot    
> grass     
> flower    
> leaf    
foo1 bar1 qss1    
> dragon    
> quiz    
foo2 bar2 qsq1    
foo3 bar3 qsa2

我的输出文件应为:-

Hello World!!!    
foo bar qss foot grass flower leaf
foo1 bar1 qss1 dragon quiz
foo2 bar2 qsq1
foo3 bar3 qsa2

因此,如果下一行中有“>”,则应将内容复制到当前行。

我尝试使用next(),但是它将文件指针指向下一行。

#f1 is read file pointer
#f2 is write file pointer

for myline in f1:
  if(next(f1) != '>'):
    f2.write("myline[1]+" "+myline[2]+" "+myline[3]+"  "+next(f1)[3])

2 个答案:

答案 0 :(得分:3)

而不是向前看,而是向后看:仅当下一行不是以“>”开头时,才在前一行添加换行符。

with open("f.txt") as f1, open("g.txt", "w") as f2:
    for myline in f1:
        myline = myline.strip() # Remove the line break
        if myline.startswith("> "):
            f2.write(myline[1:])
        else:
            f2.write("\n" + myline)

答案 1 :(得分:1)

with open(r"input.txt") as input:
    lines = input.readlines()
new_lines = (''.join(lines).replace('\n> ', ''))
with open(r"output.txt", 'w') as output:
    output.writelines(new_lines)

输入:

Hello World!!!    
foo bar qss     
> foot    
> grass     
> flower    
> leaf    
foo1 bar1 qss1    
> dragon    
> quiz    
foo2 bar2 qsq1    
foo3 bar3 qsa2

输出:

Hello World!!!    
foo bar qss     foot    grass     flower    leaf    
foo1 bar1 qss1    dragon    quiz    
foo2 bar2 qsq1    
foo3 bar3 qsa2

希望有帮助