【问题标题】:Python: Remove first instance only of string from text filePython:仅从文本文件中删除字符串的第一个实例
【发布时间】:2021-06-05 11:58:34
【问题描述】:

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

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

【问题讨论】:

    标签: python file-io text-files


    【解决方案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"),只是为了使输出和代码更清晰。如果您愿意,可以将其移除,因为它们无助于清除障碍。

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

    【讨论】:

    • 您的建议非常有效 - 非常感谢!
    • 很高兴听到这个消息。玩得开心编码!
    猜你喜欢
    • 2023-02-07
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2018-11-09
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多