标题可能有点令人困惑,或者如果我不应该在这里发帖抱歉,但是我在数字值方面遇到问题我正在连续列出一个主要目标,我希望实时绘制值。
我的问题是,一旦代码执行计算,它会将值放入列表中并打印整个列表和新值。一个例子是[1],[1,2],[1,2,3]
如何防止这种情况发生,以便我可以使用这些值实时绘制图表?我相信这会导致我收到错误[KeyError:' text']
这是我的代码:
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import json
import numpy
# Variables that contains the user credentials to access Twitter API
access_token = ""
access_token_secret = ""
consumer_key = ""
consumer_secret = ""
#creates empty list
my_list = []
my_average = []
my_range = []
newlist = []
# This is a basic listener that just prints received tweets to stdout.
class StdOutListener(StreamListener):
def on_data(self, data):
json_load = json.loads(data)
texts = json_load['text']
#print texts
***[CALCULATIONS]***
my_list.append(r)
#drop zero in list
if 0 in my_list: my_list.remove(0)
#calculate average
average = numpy.mean(my_list)
x = average[~numpy.isnan(average)]
for i in x:
if i not in newlist:
newlist.append(i)
print newlist
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, StdOutListener())
# Searches by the keywords
stream.filter(track=['soil','gardening'],stall_warnings=True)
提前感谢您,希望它有道理。
P.S非常感谢任何实时绘制数据的建议!
答案 0 :(得分:0)
我不完全理解您的代码,但我怀疑您遇到的问题是由于使用全局列表。当您追加到my_list
或newlist
时,您添加的值将永远保留在那里,因为列表永远不会重新初始化。
您可能希望在on_data
方法中创建其中一个或两个列出局部变量。只需将初始化代码(例如newlist = []
)移动到某处的函数中即可。