2017-04-30 18 views
1

2番目の列にSentenceとその感情状態を持つ大きなデータセットがあります。私はnumpy配列としてそれらを読み取るコードを開発しました。それから、文の感情が中立的であれば真、そうでなければ偽を返します。 if else条件によって返される各結果は、CSVファイルに書き込む必要があります。しかし、ここでは、forループの各反復で返されるすべての結果を書き込むのではなく、結果をCSVファイルに1回だけ書き出します。以下は私がこれまで持っていたコードです。PythonでCSVファイルに文字列値を書き込む

import csv 
import numpy as np 

with open('Book1.csv', encoding='utf8') as csvfile: 
reader = csv.DictReader(csvfile) 

for row in reader: 
    text=(row['text']) 
    emotion=(row['emotion']) 
    my_list=(text, emotion) 
    my_array = np.asarray(my_list) 

    make_array = (text, "neutral") 
    num_array = np.asarray(make_array) 

    if np.array_equal(my_array,num_array): 

     with open('test.csv', 'w') as csvfile: 
      fieldnames = ['result'] 
      writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 

      writer.writeheader() 
      writer.writerow({'result': 'True'}) 

    else: 

     with open('test.csv', 'w') as csvfile: 
      fieldnames = ['result'] 
      writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 

      writer.writeheader() 
      writer.writerow({'result': 'False'})` 

どこかで間違っているかもしれません。誰か助けてください。

+1

'open( 'test.csv'、 'w')はファイルが呼び出されるたびにファイルを上書きします。あなたはappendモード 'open( 'test.csv'、 'a')'で開くか、より良い方法としてループの前に一度だけ開く必要があります。また、 'with open( 'Book1.csv'、encoding = 'utf8')のコードはcsvfile:'としてインデントされる必要があります。 – Craig

+1

ohow、book1.csvのすべての行について、あなたはtest.csvを開いて書いて閉じています。あなたはまず必要なレコードの辞書を作成し、最後に書き込みを実行します。 – Pushkr

+0

最終的には真と偽の値を数えたいと思います。むしろそれ以外の方法があるなら私はそれに従う。教えてください。 –

答えて

2

私が正しく問題を理解している場合は、APPENDではなくを書くためのファイルを開く必要があります。

with open('test.csv', 'a') as csvfile: 
    fieldnames = ['result'] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 

    writer.writeheader() 
    writer.writerow({'result': 'True'}) 

また、if/else条件ブロック内のコードを繰り返します。 {'result': 'True'}または{'result': 'False'}の変数result_dictを作成し、それをif/elseブロックの外側に書き込む必要があります。条件付きブロック。これがはっきりしない場合はお知らせください。

+0

私はあなたのコードを試しました。列名も繰り返し書き込まれます。どうすれば修正できますか? –

+0

はいしてください。私はあなたが言ったことがはっきりしない。私にそれをする方法を教えてください。 –

+0

ここで列名をどういう意味ですか? –

関連する問題