抛出错误 - 字符串索引必须是整数

2 投票
1 回答
1706 浏览
提问于 2025-04-18 06:30

#我按照你建议的做了,结果在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 tweetprint tweet['user'] 来查看你的 tweettweet['user'] 的内容(但不要在同一个打印语句里同时打印这两个,否则第二个表达式出错就会导致什么都不显示)。这样你就能搞清楚这些数据结构是什么样的。然后你可能就知道该怎么继续了,或者你可以再发帖告诉我们你发现了什么,这样我们可以继续帮助你。

撰写回答