-2

ねえ、これが何度か聞かれたことは知っていますが、私はそれのために自分のコードを書きましたが、それは機能せず、理由がわかりません。これが私のコードです

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

4 に答える 4

3

あなたは本当に書くべきです:

if r"c:\users" not in line:
于 2012-08-03T15:37:16.627 に答える
2

の代わりに\:をエスケープする必要があると思います。"c:\\users""c:\users"

于 2012-08-03T15:35:48.793 に答える
1

バックスラッシュをエスケープする必要があります。楽しみのために、ここにワンライナーソリューションがあります: open("chp1seqs.txt","w").writelines(filter(lambda line: "c:\\users" in line, open("C:/allCHP1seq.txt","r").readlines()))

于 2012-08-03T16:03:19.060 に答える
0

それらをスライスするだけです。特に問題が上位2行のみにあることがわかっている場合は、各行をテストするよりも効率的です。

def fixfiles ():
    inputfilehandle = open("C:/allCHP1seq.txt","r")
    outputf=open("chp1seqs.txt","w")
    lines = inputfilehandle.readlines()[2:]
    for line in lines:
        outputf.write(line)
于 2012-08-03T15:35:37.640 に答える