从txt文件中删除一段行
我有一个.txt文件,里面的内容结构是这样的:
name
parameter 1
parameter 2
parameter 3
\n
name2
p1
p2
p3
\n
(...)
我不知道怎么写一个函数,能够根据传入的名字,把一个块(包括名字、参数和换行符)从文件中删除。
3 个回答
0
你可以试试使用readline这个方法:
这是来自tutorialspoint的readline()介绍,或者
- 从源文件中读取每一行。
- 如果这一行包含函数的参数(比如名字或者其他东西),那就跳过这一行,继续读取下一行。
- 把每一行过滤后的内容添加到一起,创建一个新文件。
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)
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。