2011-12-05 16 views
1

私のExcelファイルをチェックすると、最後の入力である1行のデータしか書き込まれません。これは、出力になっている関数が.xlsに正しく書き込まれません。 Python 2.7.1

def Table(fn,fe): 

     for fseq in fn: 
       count=0 
       for k in fseq: 
        if k=='G' or k=='C': 
          count=count+1 
       percentage=(float(count)/len(fseq))*100 
       fin=open(fe,'w') 
       table=str(fseq)+'\t'+str(count)+'\t'+str(percentage)+'\n' 
       fin.write(table) 
     return fe 



tablist=["AAUG","GCGA","AGCG","TCGA"] 
fout=Table(tablist, 'abc.xls') 

この:

TCGA 2 50.0 

と書き込まれているファイルの名前を返す:

AAUG 1 25.0 
    GCGA 3 75.0 
    AGCG 3 75.0 
    TCGA 2 50.0 

代わりに、私の出力は次のようになります。

なぜ文字列の最後の要素のデータしか書いていないのですか?

+0

コードを正しくフォーマットしてください。 –

+0

[openpyxl](https://bitbucket.org/ericgazoni/openpyxl/wiki/Home)を使用してみませんか? –

答えて

0

それを実演しました。空のStringを作成し、forループの反復中に作成されたテーブルの各値を追加しました。文字列.xlsファイルを作成

1

forループは各文字列の文字ではなく、文字列をループしています。

for k in fn: 
     for c in k: 
      if c=='G' or c=='C': 
       count=count+1 

(他::必要ありません)このお試しください

をまた、あなたのレポートが正しい取得する(ただし、オープンを移動させるために、外側のループの内側にあなたのファイル書き込みコードを移動する必要があります外側のループの上に)。

+0

それは9をexcelファイルに書き出します。kがリストの各文字列であることを認識した後で試しました。 –

+0

ファイルに出力するコードを並べ替える必要もあります。関数の一番上で一度開き、毎回外側のforループの周りに1回書く必要があります。 –

0
if k=='G' or k=='C': 

あなたのリストのメンバーの誰もこの条件に一致しません。したがって、count0のままです。

文字列内の文字をループしたいと思うかもしれません。

関連する問題