如何从python中的文件中删除特定行
问题描述:
嘿,我知道这已被问了几次,但我写了我自己的代码,但它不工作,我不明白为什么。这是我的代码如何从python中的文件中删除特定行
def fixfiles():
inputfilehandle = open("C:/allCHP1seq.txt","r")
outputf=open("chp1seqs.txt","w")
lines = inputfilehandle.readlines()
for line in lines:
if "c:\users" not in line:
outputf.write(line)
这里是从文件数据的一个例子,那里有基本上的这些279在该文件中,由2行分隔。但每一个都是独一无二的,我需要做的就是在指定目录的开始处摆脱位。
c:\users\gary\desktop\sequences for chp1\14-3 1076.txt
>fig|6666666.13395.peg.1076
atgatcaaagaaaccgaaaaaccgccaaccaccctctttaccgtcgtccc
cgacacccctaccgaaaccctgctgatcaacagctacgaaaccgtgtgtt
ccgtcagcaccctgctgctcgacttgtccgaagacctcaccggcaaacac
cgcgatatcgccttggccattcatcagttgagcgaactgagcgtcctgct
ggtgggcaaagccatggaccagcacacaccccgctgctga
我真的不明白我要去哪里错了/ Help!
答
我想你应该逃脱你\
:中"c:\\users"
代替"c:\users"
。
答
只要把它们分开。这不是测试每行更有效,尤其是当你知道这个问题只与最上面两行:
def fixfiles():
inputfilehandle = open("C:/allCHP1seq.txt","r")
outputf=open("chp1seqs.txt","w")
lines = inputfilehandle.readlines()[2:]
for line in lines:
outputf.write(line)
答
你真的应该写:
if r"c:\users" not in line:
答
你确实需要escape your backslash。为了好玩,这是一个单线解决方案: open("chp1seqs.txt","w").writelines(filter(lambda line: "c:\\users" in line, open("C:/allCHP1seq.txt","r").readlines()))
在这里工作很好。请说明什么是无效的。 – 2012-08-03 15:32:57
实际上究竟把什么东西放进这个文件? (除了在完成时没有关闭文件以外,我无法找到与您的代码有关的问题)。 – mgilson 2012-08-03 15:33:00
它是如何失败?该文件名中的斜杠是否需要是(n转义的)反斜杠? (即“C:\\ allCHP1seq.txt”) – John 2012-08-03 15:33:14