Python:仅从文本文件中删除字符串的第一个实例

Python: Remove first instance only of string from text file

我一直在通过读取文本文件并重写每一行来从文本文件中删除所需的行,如果我希望删除的字符串存在,使用正在关注。

with open('infile.txt', 'r') as f:
    lines = f.readlines()
with open('outfile.txt', 'w+') as f:
    for line in lines:
        if line.strip("\n") != "Desired text on line to remove":
            f.write(line)

这对除我需要删除的仅包含的一行之外的所有行都适用。

1.

这是文件中 (1.) 的第一个实例,并且始终会出现在我正在编辑的文件中;然而,它稍后会在文本文件中重复,并且必须保留这些后来的实例 - 是否可以仅删除此文本的第一个实例?

如果我没有正确理解你的问题,那么你想先删除 '1.' 并保留其余的。它可以通过多种方式完成,如下面的代码。

with open('infile.txt', 'r') as f:
    lines = f.readlines()
with open('outfile.txt', 'w+') as f:
    t = '1.'
    for line in lines:
        line = line.strip("\n")
        if line != "Desired text on line to remove" and line != t:
            f.write(line)
            f.write("\n")
        if line == t:
            t = None
          

其中之一是简单地使用逻辑运算符(我已经使用过)并创建一个要删除的变量。在我的例子中是 t。现在用它来过滤第一个实例。此后将其值更改为 None 以便在下一个实例中它将始终是一个 True 语句,并且 运行 的条件是否取决于 line 是否等于我们想要的文本.

P.S.- 我添加了更多行代码,如 line = line.strip("\n")f.write("\n") 只是为了使输出和代码更清晰。如果您愿意,可以删除它,因为它们对清除障碍没有帮助。

此外,如果您没有得到想要的输出或者我的代码有误。请随意指出,因为我还没有写任何答案并且仍在学习中。