如何在python中仅替换一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中仅替换一行相关的知识,希望对你有一定的参考价值。

我有一个文件,想要替换为可以在文件中搜索到的特定行。我喜欢this post中的以下内容:

import fileinput
new_line = 'some text'
with fileinput.FileInput(file_addr, inplace=True) as file:
    for line in file:
        if 'keyword' in line:
             line = new_line
             # Here #
        print(line)

现在,我想终止# Here #中的循环。至此,我找到了该行并替换了它。但是,如果我break循环,则文件的其余部分将不会写入文件中,而是会被删除。我正在寻找一种方法,只需在找到它时替换行,然后终止循环即可。原因是文件的长度可能太长,我不想遍历文件的其余部分。

此外,如果两种情况都存在new_line的长度与行的长度相同或不同(如果有问题的话)的解决方案。

答案

您可以将代码的一部分转换为生成器:

lines = (line if 'keyword' not in line else new_line for line in file)

然后您只需将其写入文件

with file(new_file, 'r') as new_file:
    new_file.writelines(lines)
另一答案

因为您正在使用fileinput模块,所以我相信您要做的就是先添加.replace(),然后再添加break。它仅应更改基础文件行。

if 'keyword' in line:
    line.replace(line, new_line)
    break

这里是您的问题的similar example

以上是关于如何在python中仅替换一行的主要内容,如果未能解决你的问题,请参考以下文章

如何使子表单行项目在 zoho creator 片段页面的 HTML 表格中仅出现一次?

Flutter 在 ListView 中仅重建一行

如何在android studio中用另一个片段替换一个片段

如何在 iOS 中仅缩进多行 UILabel 的第一行?

替换未调用 onAttach、onCreate、onCreateView 等的活动中的片段

如何从主要活动中替换片段