2016-03-08 79 views
1

我试图创建一些代码来在Twitter上聆听特定关键字,并且努力获得我想要的结果。如果elif语句在Python中使用Tweepy

我正在使用Python 3.4.3。

这里就是我有这么远的工作...


import tweepy 
from time import sleep 
CONSUMER_KEY = 'abcabcabc' 
CONSUMER_SECRET = 'abcabcabc' 
ACCESS_KEY = 'abcabcabc' 
ACCESS_SECRET = 'abcabcabc' 
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) 
auth.secure = True 
api = tweepy.API(auth) 

class MyStreamListener(tweepy.StreamListener): 
    def on_status(self, status): 
     try: 
      print(status.text) 
     except: 
      print("false") 

myStreamListener = MyStreamListener 
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener()) 


myStream.filter(track=['Cycling', 'Running']) 

我想要的如果ELIF报表打印不同的结果取决于是否鸣叫是骑自行车或跑步。我用这个代码,但不能让它开始工作......


class MyStreamListener(tweepy.StreamListener): 
    def on_status(self, status): 
     if 'Cycling' in myStreamListener: 
      print('Cyclist' + status.text) 
     elif 'Running' in myStreamListener: 
      print('Runner' + status.text) 
     else: 
      print('false' + status.text) 

myStreamListener = MyStreamListener 
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener()) 


myStream.filter(track=['Cycling', 'Running']) 

我可以得到如果 & ELIF脱机工作时不添加复杂性的Tweepy到公式中,但是我们对声明中的确切使用方式感到困惑。

我是Python的新手,所以很可能会犯一些简单的错误!

任何帮助将不胜感激,

非常感谢,

马特

回答

0

您正在使用in了错误的变量(指向听者功能)。使用status变量,而不是:

if 'cycling' in status.text.lower(): 
    print('Cyclist' + status.text) 

请注意,我说.lower()status.text结束。这样它就会匹配单词'cycling',而不管它是否大写。

+0

谢谢你的帮助。代码工作,并做我想要的。我似乎现在正在得到一个编码错误,但如果我解决不了它,将会打开一个新线程... UnicodeEncodeError:'UCS-2'编解码器无法编码69-69位置的字符:不支持非BMP字符在Tk – MattD

+0

关于该错误,请参阅http://stackoverflow.com/questions/32442608/python-error-ucs-2-codec-cant-encode-characters-in-position-1050-1050 – CaptSolo