繁体   English   中英

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.) 的第一个实例,并且总是在我正在编辑的文件中; 但是它稍后会在文本文件中重复,并且必须保留这些后面的实例 - 是否可以只删除该文本的第一个实例?

首先,在您提到的代码中f.readlines()应该是您错误地输入为linesline ,因此请编辑问题。

现在来回答这个问题。 如果我正确理解了您的问题,那么您想摆脱第一个'1.' 并保留 rest。 它可以通过多种方式完成,如下面的代码。

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是否等于我们想要的文本。

PS-我添加了更多代码行,例如line = line.strip("\n")f.write("\n")只是为了使 output 和代码更清晰。 您可以根据需要将其删除,因为它们无助于清除障碍。

此外,如果你没有得到想要的 output 或者我的代码是错误的。 随意指出,因为我还没有写任何答案,还在学习。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM