blu*_*rld 6 python csv with-statement
我的代码出现以下错误:
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
Run Code Online (Sandbox Code Playgroud)
我使用了以下代码:
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)
Run Code Online (Sandbox Code Playgroud)
我已经看到了一些其他类似的问题(Python Json with returns AttributeError: __enter__),但解决方案不适用于我的问题。
有人看到问题所在吗?
你没有csv.reader正确使用。它不支持放置在with语句内。
尝试按照使用示例中的相同方式进行操作:
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..
Run Code Online (Sandbox Code Playgroud)
将其包裹open在里面with(因为open支持它并且实际上是推荐的使用方式)然后csv.reader在里面使用。
| 归档时间: |
|
| 查看次数: |
8859 次 |
| 最近记录: |