抛出错误 - 字符串索引必须是整数
#我按照你建议的做了,结果在Python命令行里出现了错误
从rauth导入OAuth1Service
twitter = OAuth1Service(
name='twitter',
consumer_key='2Xs6nzIL8r5yx4DQCxgg',
consumer_secret='XXXXXXXX',
request_token_url='https://api.twitter.com/oauth/request_token',
access_token_url='https://api.twitter.com/oauth/access_token',
authorize_url='https://api.twitter.com/oauth/authorize',
base_url='https://api.twitter.com/1/')
request_token, request_token_secret = twitter.get_request_token()
authorize_url = twitter.get_authorize_url(request_token)
print 'Visit this URL in your browser: ' + authorize_url
pin = raw_input('Enter PIN from browser: ')
session = twitter.get_auth_session(request_token,
request_token_secret,
method='POST',
data={'oauth_verifier': pin})
params = {'screen_name': '@nytimes', # User to pull Tweets from
'include_rts': 1, # Include retweets
'count': 10} # 10 tweets
r = session.get('statuses/user_timeline.json', params=params)
你要求只打印推文,我在这里做到了
for i, tweet in enumerate(r.json(), 1):
print tweet
#handle = tweet['user']['screen_name']
#text = tweet['text']
#print('{0}. @{1} - {2}'.format(i, handle, text))
1 个回答
0
你的 tweet
要么是一个字符串 str
,要么是一个字典 dict
,而且你的 tweet['user']
是一个字符串 str
。你似乎认为 tweet['user']
是一个字典,然后试图用 tweet['user']['screen_name']
来获取数据。这样做的意思是你在用一个字符串去索引另一个字符串,这样是行不通的(因为这样没有意义)。所以你看到的错误信息就是这个意思:TypeError: string indices must be integers
。
我猜你是想通过 print tweet
和 print tweet['user']
来查看你的 tweet
和 tweet['user']
的内容(但不要在同一个打印语句里同时打印这两个,否则第二个表达式出错就会导致什么都不显示)。这样你就能搞清楚这些数据结构是什么样的。然后你可能就知道该怎么继续了,或者你可以再发帖告诉我们你发现了什么,这样我们可以继续帮助你。