2016-01-17 73 views
0

我正在使用以下代碼來回復推文「Hello World」的用戶。它似乎沒有找到任何用戶。使用Tweepy自動回覆

你能看到代碼的任何問題嗎?

#!/usr/bin/env python 
import tweepy 
#from our keys module (keys.py), import the keys dictionary 
from keys import keys 

CONSUMER_KEY = keys['consumer_key'] 
CONSUMER_SECRET = keys['consumer_secret'] 
ACCESS_TOKEN = keys['access_token'] 
ACCESS_TOKEN_SECRET = keys['access_token_secret'] 

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) 
api = tweepy.API(auth) 

twts = api.search(q="Hello World!")  

#list of specific strings we want to check for in Tweets 
t = ['Hello world!', 
    'Hello World!', 
    'Hello World!!!', 
    'Hello world!!!', 
    'Hello, world!', 
    'Hello, World!'] 

for s in twts: 
    for i in t: 
     if i == s.text: 
      sn = s.user.screen_name 
      print s 
      m = "@%s Hello!" % (sn) 
      s = api.update_status(m, s.id) 

回答

0

只看結果,從網絡搜索

https://twitter.com/search?q=Hello%20World!

結果通常就是hello和世界,而不是你想要的具體形式。您可以在API調用中稍微縮小此範圍,方法是使用引號括起來。

但你仍然會發現結果一樣

的 「Hello World!聽這首歌!https://t.co/x8QUmIHrVk \ n我的CMD NJ系列....... NSR & NSP」

0

一一般的良好做法是打印正在處理的對象以查看它們包含的內容。

在上面的方法中,您正在檢查那個i == s.text

這將只評估True當鳴叫只有包含從您的清單t完全匹配。因此,如果有人發推文「Hello World!多麼美妙的世界」,您的條件將評估False

for s in twts: 
    print s.text # Let's see what's in s.text 
    for i in t: 
     if i == s.text: 
      sn = s.user.screen_name 
      print (sn,s.text) 

這裏是前三s.text對象:

RT @TheCamcorderApp:你好世界;)

@KaoruAIX沒有兒子的松樹! Vamos a hacer un juego en equipos para fomentar launiónde Hello,World y FAIX(?)

infosbench #TILab #SmartCity #OpenAirLab - hello world! 9887人坐下!

總之,探索使用in運營商爲您的具體方法。而不是i == s.text:,請使用i in s.text: SO標記tweepy也有幾個問題。他們會給你更多有效的解析推文的想法。