2017-04-23 5 views
-1

Ich versuche, die positive und negative Bewertung der Anweisungen in einer Textdatei zu speichern. Ich möchte die Partitur in einer CSV-Datei speichern. Ich habe den unten angegebenen Code implementiert:Python - Floating-Werte in CSV-Datei speichern

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() 

Aber der Code zeigt mir die folgenden Fehler in for Schleife.

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

Antwort

2

Sie haben mehrere Fehler mit Ihrem Code:

Ihr Code und Fehler nicht miteinander übereinstimmen.

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

pos_score ist ein Schwimmer so beide Fehler sind range() eine int nimmt und nimmt eine for valiterable. Woher willst du deine Werteliste bekommen?
Und es sieht aus wie Sie ein list of list of values weil man auch erwarten, ist ein generator expression in Ihrem von der Nutzung writerow mit

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

Vielleicht sind Sie nur eine Liste von Werten erwartet, so dass Sie loswerden die for Schleife bekommen und nur Verwendung:

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

Verwendung:

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

bedeutet, dass Sie nicht mehr anrufen müssen f.close() und with schließt die Datei am Ende des with Block. Dies bedeutet auch, dass die writerow() im with Block sein muss:

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

danke für die Hilfe –