我正在使用下面的代码回复一个tweet "Hello World“的用户。它似乎没有找到任何用户。
你能看到代码有什么问题吗?
#!/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)发布于 2016-01-17 23:30:50
只是看一下网络搜索的结果
https://twitter.com/search?q=Hello%20World!
结果通常是hello和world,而不是您想要的特定形式。您可以在API调用中使用引号将其略微缩小,例如
但是你仍然会发现像这样的结果
“你好,世界!听这首歌!https://t.co/x8QUmIHrVk\n nMy NJ Family.......NSR & NSP”
发布于 2016-01-18 00:32:34
一般的好做法是打印正在使用的对象,以查看它们包含的内容。
这将仅当tweet only 包含来自您的列表t的精确匹配时评估True。因此,如果有人发推文“你好,世界!多么美好的世界”,你的条件将评估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: Hello World ;)
Vamos a hacer un juego en equipos para fomentar la unión de Hello,World y FAIX (?)
infosbench #TILab #SmartCity #OpenAirLab -- hello world!9887人入座!
总之,探索针对您的特定方法使用in运算符。使用i in s.text:代替i == s.text:,在如此标记的tweepy上也有几个问题。他们将为你提供更有效的解析tweet的方法。
https://stackoverflow.com/questions/34839146
复制相似问题