我收到以下错误输入代码:
Traceback (most recent call last):
File "C:\Users\XXX\Sentiment Analysis-vader.py", line 34, in <module>
f.printer()
File "C:\Users\XXX\Sentiment Analysis-vader.py", line 18, in printer
with csv.reader(open('analyse_' + str(bloombergcode) + '.csv', 'r'), delimiter= ",",quotechar='|') as q2:
AttributeError: __enter__
Process finished with exit code 1
我使用了以下代码:
import csv
from nltk.sentiment.vader import SentimentIntensityAnalyzer
class VaderSentiment:
def __init__(self, bloomcode):
self.bloomcode = bloomcode
def print_sentiment_scores(self, sentence):
self.sentence = sentence
analyser = SentimentIntensityAnalyzer()
snt = analyser.polarity_scores(self.sentence)
print("{:-<40} {}".format(self.sentence, str(snt)))
def printer(self):
bloombergcode = self.bloomcode
with csv.reader(open('analyse_' + str(bloombergcode) + '.csv', 'r'), delimiter= ",",quotechar='|') as q2:
for line in q2:
for field in line:
print_sentiment_scores(field)
for code in ('AAPL', 'NFLX'):
f = VaderSentiment(code)
f.printer()
time.sleep(1)
我已经看到了其他一些类似问题(Python Json with returns AttributeError: __enter__),但解决方案无法解决我的问题。
有没有人看到问题?
提前致谢并提出最好的问候
////编辑:
感谢标记为有用的贡献,我最终使用的代码(在得到我解决的另一个错误之后)
import csv
from nltk.sentiment.vader import SentimentIntensityAnalyzer
import time
class VaderSentiment:
def __init__(self, bloomcode):
self.bloomcode = bloomcode
def print_sentiment_scores(self, sentence):
self.sentence = sentence
analyser = SentimentIntensityAnalyzer()
snt = analyser.polarity_scores(self.sentence)
print("{:-<40} {}".format(self.sentence, str(snt)))
def printer(self):
bloombergcode = self.bloomcode
with open(f'analyse_{str(bloombergcode)}.csv', 'r') as csv_file:
q2 = csv.reader(csv_file, delimiter=",", quotechar='|')
for line in q2:
for field in line:
self.print_sentiment_scores(field)
for code in ('AAPL', 'NFLX'):
f = VaderSentiment(code)
f.printer()
time.sleep(1)
答案 0 :(得分:0)
您没有正确使用csv.reader
。它不支持放在with
statement内,这就是您收到AttributeError: __enter__
错误的原因。
尝试按照usage example中的相同方式执行此操作:
with open('analyse_' + str(bloombergcode) + '.csv', 'r') as csv_file:
q2 = csv.reader(csv_file, delimiter=',', quotechar='|')
for line in q2:
# ..rest of your code..
在with
内包裹open
(因为open
支持它,实际上是推荐使用它的方式),然后在其中使用csv.reader
。