从txt文件中删除一段行

0 投票
3 回答
1861 浏览
提问于 2025-04-17 17:01

我有一个.txt文件,里面的内容结构是这样的:

name
parameter 1
parameter 2
parameter 3
\n
name2
p1
p2
p3
\n
(...)

我不知道怎么写一个函数,能够根据传入的名字,把一个块(包括名字、参数和换行符)从文件中删除。

3 个回答

0

你可以试试使用readline这个方法:

这是来自tutorialspoint的readline()介绍,或者

这是Python官方文档关于readline的说明

  1. 从源文件中读取每一行。
  2. 如果这一行包含函数的参数(比如名字或者其他东西),那就跳过这一行,继续读取下一行。
  3. 把每一行过滤后的内容添加到一起,创建一个新文件。
0

在文件中并没有“删除”这个操作。你只能对文件进行读取和写入。不过,在Python中,你可以从列表中删除某些项目,或者在遍历时跳过它们。

In [1]: def exclude(f, name):
   ...:     with open(f) as fo:
   ...:         found = False
   ...:         for line in fo:
   ...:             if line.strip() == name:
   ...:                 found = True
   ...:                 continue
   ...:             if found and not line.strip():
   ...:                 found = False
   ...:             if not found:
   ...:                 yield line
   ...: 

In [2]: with open('/tmp/new.txt', 'w') as new:
   ...:     new.writelines(exclude('/tmp/text.txt', 'name'))
   ...: 

这个例子会创建一个新文件,里面不包含以"name"开头的那一块内容。它假设这些内容块是用空行分开的。

0
def rmblock(path, block):                           
    lines = open(path).readlines()                  
    blockstart = lines.index(block + "\n")          
    blockend = lines.index(r"\n" + "\n", blockstart)
    del(lines[blockstart:blockend+1])               
    open(path, 'w+').writelines(lines)              

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答