python - Python:仅从文本文件中删除字符串的第一个实例
问题描述
如果我希望删除的字符串不存在,我一直在通过读取文本文件并重写每一行来从文本文件中删除所需的行,使用以下命令。
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
等于我们想要的文本。
PS-我添加了更多代码行,例如line = line.strip("\n")
,f.write("\n")
只是为了使输出和代码更清晰。您可以根据需要将其删除,因为它们无助于清除障碍。
此外,如果你没有得到想要的输出或者我的代码是错误的。随意指出,因为我还没有写任何答案,还在学习。
推荐阅读
- javascript - 为什么,当滚动页面时,当滚动到带有水平块的块时,它并不总是滚动?
- json - 如何将输出转换为 JSON 格式?
- css -
Ionic + Angular 中的二维码大小 - python - Tensorflow2.1:训练时不更新 tf.Variable 值
- docker - 如何将 docker 连接到 WSL2 发行版
- wordpress - Fusion Builder 中继器
- reactjs - 如何在 Fluent UI React 中使用网格布局
- java - Spring Boot - 必需的 @RequestBody 类字段
- c# - 使用c#去除带问号的黑色菱形
- c# - 使用 WebClient.UploadFile 将文件上传到 WebDAV 服务器返回 401