如何从python中删除文件中的特定行

时间:2012-08-03 15:29:29

标签: 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

我真的没有看到我出错的地方:/帮助!

4 个答案:

答案 0 :(得分:3)

你应该写:

if r"c:\users" not in line:

答案 1 :(得分:2)

我想你应该逃避\"c:\\users"而不是"c:\users"

答案 2 :(得分:1)

您需要escape your backslash。为了好玩,这是一个单线解决方案: open("chp1seqs.txt","w").writelines(filter(lambda line: "c:\\users" in line, open("C:/allCHP1seq.txt","r").readlines()))

答案 3 :(得分:0)

把它们切掉。它比测试每一行更有效,特别是当你知道问题只有前两行时:

def fixfiles ():
    inputfilehandle = open("C:/allCHP1seq.txt","r")
    outputf=open("chp1seqs.txt","w")
    lines = inputfilehandle.readlines()[2:]
    for line in lines:
        outputf.write(line)