如何在Python循环中删除先前的迭代?

问题描述 投票:-1回答:1

感谢您的帮助。

我有一个由许多书籍组成的大型文本文档。所有的书都有“运行标题”,我注意到它们出现在页码行的前面。页码为1到4位数字。页码在新行上。

[我想遍历该文件,并让Python在到达以页码开头的行时删除以前的迭代。

谢谢

Bennett

我的示例代码是:

import re
f=open("corpus.txt", "r+", "a")
for line in f:
    line = line.rstrip()
    if re.search('^[0-9]*?', line):
        #delete previous line
python iteration
1个回答
0
投票

我写了一个凌乱的解决方案,但显然有效。如果这是问题delete the last iteration

的意思

输入:

adjiowa,adwadjiowa,adw
adjiowa,adw
adiwpdjqodij
123
ajdiow
ajdiowd

输出:

adjiowa,adwadjiowa,adw
adjiowa,adw
DELETED LINE
123
ajdiow
ajdiowd
import re

with open("corpus.txt", "r+") as f, open("output.txt", "w") as output:
    last_line = f.readline().rstrip()
    for line in f:
        curr_line = line.rstrip()

        if re.search('^[0-9]*', curr_line).group() != "":
            print("found")
            output.write("DELETED LINE" + '\n')
            last_line = curr_line
        else:
            output.write(last_line + '\n')
            last_line = curr_line

    output.write(curr_line)

您还可以将所有行附加到列表中,然后在遇到页码时修剪最后一项。然后将它们逐行写入新文件。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.