2016-07-11 17 views
1

リストの内容をcsvファイルの単一の列に書き込もうとしています。これまで私がこれをやっている間、私はこのスクリプトを動作させることができません。代わりに、代わりにスコア()リストの内容を単一のcsv列に書き込む

#getting values for p vlue of 1%-100%   
a = [numpy.arange(.01,1.01,.01)] 
for i in a: 
    with open("GFOLD_Hisat2.csv", 'wb') as file3: 
     filewriter = csv.writer(file3) 
     filewriter.writerow(score(list1, list2, i)) 

行で満たされた列の私のすべては、整数

私が変更すべきか上の任意の考えを出力する関数でありますか?何であるかlist1list2の質問を無視

+0

まあリスト1とリスト2は何ですか?それが事実を変えるので、実際のリストですか?また、あなたがそれらを必要としているかどうか確かめて、その括弧の中に 'val'を入れてみましたか? – SAMO

+1

'list1'と' list2'を表示するために質問を修正して、あなたの望む出力が何であり、 –

+0

コードを簡単にするために少し修正しました。 – Labrat

答えて

3

score()は、単一の整数を返した場合、彼らは無関係である)、私はこの問題は、あなたのループ構造にあると思います。おそらく現時点で

with open("GFOLD_Hisat2.csv", 'wb') as file3: 
    filewriter = csv.writer(file3) 
    for i in a: 
     filewriter.writerow((score(list1, list2, i),)) 

をしたい

代わりの

for i in a: 
    with open("GFOLD_Hisat2.csv", 'wb') as file3: 
     filewriter = csv.writer(file3) 
     filewriter.writerow(score(list1, list2, i)) 

あなたはファイルを開くとiの値ごとに新しい作家を作成しています。私はscoreの結果をtupleに変えました。完全にループを回避 -

In [8]: a = [1,2,3,4,5] 
In [9]: with open('a.csv', 'wt') as f: 
    wr = csv.writer(f) 
    for i in a: 
     wr.writerow((i,)) 
    ...:   
In [10]: !cat a.csv 
1 
2 
3 
4 
5 

は、私はまた、ロブが指摘するように、あなただけの理解を使用することができますあなたは'wb'

でファイルを開いている理由はわかりません。私の答えは、あなたの既存のコードの間違いを説明することに焦点を当てています。

出力ファイルに実際には1つの列しか含まれていない場合は、csv.writerを使用する理由はほとんどありません。単にあなたがファイルを開くと、ループの順序を変更する必要があり、次の

a = [1,2,3,4,5] 
b = [score(list1, list2, i) for i in a] 
with open('a.csv','wt') as f: 
    f.writelines('\n'.join(map(str,b)) 
+0

これはまだ動作しません: '.writerow()'は反復可能ですが、 'score()'は明らかに単一の 'int'を返します。 –

+0

ええ、ありがとう。通訳者 – kdopen

+0

Yupには、列の代わりに列の内容が出力されているだけです。 – Labrat

0

の操作を行います。

a = [numpy.arange(.01,1.01,.01)] 

with open("GFOLD_Hisat2.csv", 'wb') as file3: 
    filewriter = csv.writer(file3) 
    for i in a: 
     filewriter.writerow(score(list1, list2, i)) 
関連する問題