0

コードに既にあるものに加えて、 newString.strip('\n') も使用してみましたが、何もしません。問題にならない .fasta ファイルを入力しています。前もって感謝します。

def createLists(fil3):
    f = open(fil3, "r")
    text = f.read()

    listOfSpecies = []
    listOfSequences = []

    i = 0
    check = 0

    while (check != -1):
        startIndex = text.find(">",i)
        endIndex = text.find("\n",i)
        listOfSpecies.append(text[startIndex+1:endIndex])

        if(text.find(">",endIndex) != -1):
            i = text.find(">",endIndex)
            newString = text[endIndex+1: i]
            newString.strip()
            newString.splitlines()
            listOfSequences.append(newString)

        else:
            newString = text[endIndex+1:]
            newString.strip()
            newString.strip('\n')
            listOfSequences.append(newString)
            return (listOfSpecies,listOfSequences)


def cluster(fil3):
    print createLists(fil3)


cluster("ProteinSequencesAligned.fasta")
4

2 に答える 2

4

文字列は不変です:

In [1]: s = 'lala\n'

In [2]: s.strip()
Out[2]: 'lala'

In [3]: s
Out[3]: 'lala\n'

In [4]: s = s.strip()

In [5]: s
Out[5]: 'lala'

だからただやってください:

new_string = text[end_index+1:].strip()

また、PEP 8 に従ってください。また、行に for ループを使用するだけでループを書き直すこともできます。Python ファイルは直接反復をサポートします。

In [6]: with open('download.py') as fobj:
   ...:     for line in fobj:
   ...:         print line

また、ステートメントを使用しない場合は、関数の最後にあるメソッドでwithファイルを閉じてください。close()

于 2012-05-06T07:00:32.840 に答える
0

結局、最良の解決策はnew_string = text [endIndex + 1:]。replace('\ n'、'')であることがわかりました。

于 2012-05-06T16:56:21.523 に答える