如何在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 表格中仅出现一次?
如何在android studio中用另一个片段替换一个片段