2017-04-23 12 views
-1

文の肯定と否定のスコアをテキストファイルに保存しようとしています。スコアをCSVファイルに保存したい。私は、下記のコードを実装しました:Python - CSVファイルに浮動小数点値を格納する

import openpyxl 
from nltk.tokenize import sent_tokenize 
import csv 
from senti_classifier import senti_classifier 
from nltk.corpus import wordnet 

file_content = open('amazon_kindle.txt') 

for lines in file_content: 
    sentence = sent_tokenize(lines) 
    pos_score,neg_score = senti_classifier.polarity_scores(sentence) 

    with open('target.csv','w') as f: 
     writer = csv.writer(f,lineterminator='\n',delimiter=',') 

    for val in range(pos_score): 
     writer.writerow(float(s) for s in val[0]) 
    f.close() 

をしかし、コードがforループの中で私に次のエラーが表示されます。

あなたのコードとエラーが一致していない:

Traceback (most recent call last):

File "C:\Users\pc\AppData\Local\Programs\Python\Python36-32\classifier.py", line 21, in for val in pos_score: TypeError: 'float' object is not iterable

答えて

2

あなたはあなたのコードを持ついくつかのエラーを持っています。

for val in pos_score: # traceback 
for val in range(pos_score): #code 

pos_scoreので、両方がintをとり、for valiterableかかりrange()エラーであるフロートです。どこから値のリストを取得すると思いますか?
そして、あなたはまた、あなたがforループを排除し、ちょうど得ることができるので、おそらく、あなただけの値のリストを期待しているあなたのwriterow

writer.writerow(float(s) for s in val[0]) 

generator expressionを使用しているので、あなたがlist of list of valuesを期待しているように、使用からそれが見えます使用:

writer.writerow(float(val) for val in <list_of_values>) 

使用:

with open('target.csv','w') as f: 

f.close()に電話する必要がなくなったことを意味し、withブロックの最後にはwithがファイルを閉じます。助けのための

with open('target.csv','w') as f: 
    writer = csv.writer(f,lineterminator='\n',delimiter=',') 
    writer.writerow(float(val) for val in <list_of_values>) 
+0

感謝:これもwithブロックであることをwriterow()ニーズを意味し、 –

関連する問題