我有一个制表符分隔的txt文件。
我想删除第n行制表符分隔的txt。
我会指定像
n = 1
然后程序将只删除文件的第一行。
如果程序在没有读取整个输入文件的情况下完成,那就太棒了。
我试图从之前的一个问题中学习:
Concatenate tab-delimited txt files vertically
这个问题是垂直连接两个制表符分隔的txt文件。所以我认为逆转这个过程会为我做类似的事情。但是我找不到怎么做。
我还尝试了很多其他stackoverflow答案。
但他们主要是“删除具有特定短语的行”,而不是“删除第n行”
(How to delete a line from a text file using the line number in python,Deleting a specific line in a file (python),Deleting a line from a file in Python)
答案 0 :(得分:1)
lineToRemove = 7
f = open("yourfile.txt","r")
lines = f.readlines()
f.close()
f = open("yourfile.txt","w")
linesInFile = 0
for line in lines:
linesInFile = linesInFile + 1
if linesInFile != lineToRemove:
f.write(line)
f.close()
修改:使用del
并省略显式open
和close
,我们可以减少代码:
lines = file("yourfile.txt", "r").readlines()
del lines[6]
file("yourfile.txt", "w").writelines(lines)
请注意del lines[6]
删除第7行,因为索引从零开始。所以,这是我们可以使用的一个方便的功能:
def deleteLine(filename, lineToRemove):
lines = file(filename, "r").readlines()
del lines[lineToRemove-1]
file(filename, "w").writelines(lines)
答案 1 :(得分:1)
您可以使用itertools.islice
。这里没有涉及Python for循环因此它应该很快:
from itertools import islice
n = 4
with open('file.txt') as f, open('out.txt', 'w') as out:
out.writelines(islice(f, n-1)) #write the lines before the nth line
out.writelines(islice(f, 1, None)) #write the rest of the lines except nth