2017-06-14 90 views
0

我是python和NLP的新手,我正在研究twitter情绪分析。我能够打印数据以及极性和主观性,但我的目标是将数据写入一个csv文件,我无法做到这一点,我得到了IO异常。这里是我的代码如何将twitter的情绪分析结果写入CSV文件

import tweepy 
from textblob import TextBlob 
import csv 

consumer_key = 'xxxxxxxxxxxxxxxxxxxxxx' 
consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 

access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
access_token_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' 

auth = tweepy.OAuthHandler(consumer_key,consumer_secret) 
auth.set_access_token(access_token,access_token_secret) 

api = tweepy.API(auth) 

public_tweets = api.search('Uk election') 
with open("sentiment.txt",'w') as scorefile: 
scoreFileWriter = csv.writer(scorefile) 
for tweet in public_tweets: 
print(tweet.text) 
analysis = TextBlob(tweet.text) 
print(analysis.sentiment) 
scoreFileWriter.writerow([tweet.text,analysis.sentiment]) 

我得到的例外是,

Traceback (most recent call last): 
    File "C:/Users/Jeet Chatterjee/NLP/sentiment_analysis_twitter.py", line 25, in <module> 
    scoreFileWriter.writerow([tweet.text,analysis.sentiment]) 
ValueError: I/O operation on closed file. 

我只是希望能有3列相同极性,主观性和CSV文件的内容。请帮助

+1

你必须正确地缩进代码。所有的文件操作都应该在'with open(....)as'语句中进行。 – akhilsp

回答

1

缩进在Python中非常重要,否则你的块会被认为是空的。 在你的情况下,with块立即结束,因此文件被关闭,这就是你得到这个异常的原因。

的代码也许应该是这样的:

public_tweets = api.search('Uk election') 
with open("sentiment.txt",'w') as scorefile: 
    scoreFileWriter = csv.writer(scorefile) 
    for tweet in public_tweets: 
     print(tweet.text) 
     analysis = TextBlob(tweet.text) 
     print(analysis.sentiment) 
     scoreFileWriter.writerow([tweet.text,analysis.sentiment]) 
+0

谢谢,我得到了结果 – Mandrek

0

您必须正确缩进您的代码。 所有文件操作都应该在with open(....) as ...块内。