【发布时间】:2019-03-29 05:49:46
【问题描述】:
您好,我正在修改 Python (2.7) 中的一些代码,我为使用 Twitter 更新的 API 编写代码,想知道是否有人可以帮助解决这个相当简单的问题...
我正在阅读帐户的最新提及作为变量“提及”和字符串本身(请参阅下面的代码了解我如何从 api 获取它):
Status(contributors=None, truncated=False, text=u'Here we have a tweet', is_quote_status=False, retweeted=True, u'created_at': u'Sun Dec 25 22:26:12 +0000 2011')
(显然,每次提及的内容都更多,很多行,但我已将其精简为所有必要的内容)
我想把它带入一个函数并用 json.loads 加载它以便使用它(这就是问题所在)......我的代码如下:
import ConfigParser
import json
import re
import csv
from tweepy import OAuthHandler
from tweepy import API
from datetime import datetime, time, timedelta
import traceback
consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
account_screen_name = ''
account_user_id = ''
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = API(auth)
mentions = api.mentions_timeline(count=1)
now = datetime.now()
def myfunction(mention):
tweet = json.loads(mention.strip())
retweeted = tweet.get('retweeted')
from_self = tweet.get('user',{}).get('id_str','') == account_user_id
if retweeted is not None and not retweeted and not from_self:
try:
DO SOME THINGS
else:
DON'T DO THINGS
for mention in mentions:
print mention.text
if now < (mention.created_at + timedelta(hours=1) + timedelta(seconds=10)):
print "Mention was in the last ten seconds"
myfunction(mention)
else:
print "Wasn't in last ten seconds, so do nothing."
但是,如果我这样做,我会收到错误:
Traceback (most recent call last):
File "stuff.py", line 100, in <module>
myfunction(mention)
File "stuff.py", line 40, in replier
tweet = json.loads(mention.strip())
AttributeError: 'Status' object has no attribute 'strip'
在 json 方面我不是最好的,所以这可能是一个明显的问题,但任何人都可以解决它吗?
我现在不想更改任何其他代码,因为代码太多而且需要很长时间。我知道这不是很好的做法,但这是一个家庭项目,我只想让线路正常工作,即所有更改都发生在:
tweet = json.loads(mention.strip())
我怀疑这是因为我试图将许多提及中的第一个加载到提及字符串中...而这对于 json.loads() 来说不正确?
【问题讨论】:
-
我猜这是一条自动消息,因为代码中显然没有那么多行,而且代码显然是最小的、完整的和可验证的,我只是在粘贴时把数字扔进去明确这是一个假人。
-
最小、完整和可验证意味着我们应该能够复制/粘贴代码(如果需要,还可以复制资源)并重现问题。导入语句,创建
mention对象,然后调用json.loads。真的很有帮助。 -
你能举个例子来说明一下mention的样子吗?
-
谢谢sal 和Sujil,我已经添加了上下文......希望够了!我相当确定这个问题只是因为我试图加载来自 Twitter API 的许多内容的第一次提及,而这不适用于 json.loads() ...所以希望这是一个非常简单的修复?
-
mention属于Status类。不幸的是,我在tweety上找不到关于Status类的文档,这显然是这里的主要问题。我会做一个dir(mention),看看暴露了哪些方法和属性来获得一个想法。
标签: python json python-2.7 tweepy