2012-04-29 20 views
0

私はPythonで分類器を作っていますが、うまくいきます。今私は結果をテキストファイルに出力する必要がありますが、これは問題なく実行できます。問題は、結果のIDと結果自体を含める必要があるということです。私はPythonには新しく、まだ構文に慣れていますので、どんな助けでも大歓迎です。Pythonで値を追加してファイルに書き込む

printedRow = '{id1},{result1}'.format(id1=id , result1 = result) 
    print("~~~~~RESULT~~~~~") 

    for k in range(0,len(pans)): 
     pans.append(row[0] + ','+ p.classify(row)) 

    print (pans) 
    print(pans, file=outfile) 

分類器の結果に含める必要があるIDは、インデックス行[0]に保持されています。このコードを実行すると、すべての結果に同じIDが出力されます。結果はうまく印刷されています、私は結果とIDを一致させることができる必要があります。

これらは両方ともリストに保存されており、各リストには約2000個の値があります。

+3

私たちが現在作業していることを確認できるように、パンとローの値を教えてください。 –

+0

パンには分類器の結果が含まれているため、結果は '<=50k','> 50k'または 'unknown'のいずれかになります。行の値は 'id1'、 'id453'となります。 – Hiky

+0

申し訳ありませんが、私は明確ではありませんでした。実際の値は重要ではありません。重要なのはデータ構造です。このコードの実行開始時にいくつの値が含まれますか?また、回答を編集して情報を提供するのが最も簡単です。 –

答えて

0

rowまたはpansを定義していないため、何をしようとしているのかわかりません。より多くのPythonicソースコードの使用を検討してください。オブジェクトが任意の型のコレクションである場合は、ある種のイテレータを使用します。列挙は各ループにインデックス番号を与えるのに便利です。

for n, p in enumerate(pans): 
    print "pan %d is %s" % (n, p) 

また、そのサイズがpansに依存ループ内pansに追加されているように見えます。それは永遠に続くことができます!

あなたはそれを追加し、リストに追加したい場合は、例えば:

newpans = pans + [x.classify(row) for x in oldpans] 

よりもむしろファイルにそれを印刷し、その後、メモリ内の構造を構築し、ファイルに直接書き込みます。これははるかに少ないメモリを使用します。速度が必要な場合は、コンピュータにファイルをバッファリングさせます。

f = open("output.txt", "w") 
for n, p in enumerate(pans): 
    f.write("%s,%s\n" % (n, classify(p))) 
f.close() 
関連する問題