2012-05-06 9 views
0

私はすでにコード内にあるものに加えてnewString.strip( '\ n')を使ってみましたが、何もしません。私は問題ではないはずの.fastaファイルを入力しています。前もって感謝します。pythonの改行文字を削除する際の問題

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") 
+3

? –

+0

デバッグする前にprint newStringを追加しようとしています –

+0

私には奇妙に思えるストリップの前後に違いはありません –

答えて

4

文字列は不変です:

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

をし、また、あなただけの上にforループを使用してループを書き換えることができPEP 8 に従ってください。

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' 

は、だからやりますライン。 Pythonのファイルは直接反復サポート:

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

をそして、あなたはwithステートメントを使用しない場合、あなたはあなたの関数の最後でclose()方法でファイルを閉じることを確認してください。

終わりでよく
+0

編集していくつか提案してください。 – rubik

+0

ありがとう、私はsplitlinesとストリップを置き換えました。また、new_stringではなくnewStringの命名に関してPEP 8のコメントがありますか? –

+0

@AlbertoDoes:これは一般的なアドバイスです:変数の命名の大部分ですが、スペース(たとえば演算子の周り)や条件文( 'if condまたはcond2'が' if(cond)または(cond2) 'よりも優れています。 – rubik

0

私はnew_stringするための最善の解決策を見つけ=テキスト[endIndexの+ 1:]。単にファイルを反復して何が悪い(「」、「\ n」)を置き換える

関連する問題