我正在编写代码来分析不同政客的社交媒体模式。这个只是给出了一个日期时间之间的tweet计数。除非我回到过去太久,否则下面的方法是完美的。例如,这可以追溯到近一年前:
#------------------------------------------------------------------------------
# Import libraries and modules
from api import api # Using Tweepy
import datetime
from datetime import timedelta
#------------------------------------------------------------------------------
# Define variables
user = 'vp'
timezoneShift = timedelta(hours=5) # Twitter times are UTC. Convert to Eastern Time. UTC−05:00 or UTC−04:00 depending on daylight savings. TODO: Fix for strictly EST or EDT?
startDate = datetime.datetime(2017, 1, 20, 0, 0, 0) + timezoneShift
endDate = datetime.datetime(2017, 1, 26, 0, 0, 0) + timezoneShift
#------------------------------------------------------------------------------
# Fetch tweets
tweets = []
tmpTweets = api.user_timeline(user)
for tweet in tmpTweets:
if tweet.created_at < endDate and tweet.created_at > startDate:
tweets.append(tweet)
while (tmpTweets[-1].created_at > startDate): # If more to get, get more
print('Fetched up to', tmpTweets[-1].created_at - timezoneShift, '...fetching more')
tmpTweets = api.user_timeline(user, max_id = tmpTweets[-1].id-1) # ID minus one else we begin where we ended and get a duplicate
for tweet in tmpTweets:
if tweet.created_at < endDate and tweet.created_at > startDate:
tweets.append(tweet)
#------------------------------------------------------------------------------
# Print tweets
count = 0
for tweet in tweets:
print(tweet.created_at - timezoneShift)
count += 1
print('\n' + user, 'tweets from', startDate - timezoneShift, 'to', endDate - timezoneShift)
print('\nCount:', count, '\n')
我得到这个错误:
Traceback (most recent call last): File "count.py", line 22, in while (tmpTweets[-1].created_at > startDate): # If more to get, get more IndexError: list index out of range
但是如果我回到,比如说,二月的第一个星期,它就起作用了。在
出什么问题了,我该怎么解决?在
据我所知,列表tmpTweets无法使用索引-1访问。在python中,list索引从0开始,因此传入index-1是没有意义的,因此您得到索引超出范围的错误是完全合乎逻辑的。在
是问题吗
编辑:抱歉,我真的很累,我完全不知道索引-1在python中是完全有效的。在
相关问题 更多 >
编程相关推荐