当我使用索引访问我的列表时出现索引错误
I'm getting an index error when I use index to access my list
我已经开始使用 snscrape 为我的项目获取 Twitter 数据。我正在以列表格式输出数据并使用 pandas 来正确地可视化它。因为参与数据不是恒定的并且会持续更新。我正在尝试使用 for 循环和 if 语句来比较和更新它(如果需要)但是当我尝试使用索引访问列表中的特定属性时,如:
点赞、转发和回复计数
它给我一个索引错误。
脚本
#get data
import snscrape.modules.twitter as sntwitter
import pandas as pd
tweets_list1 = []
for i, tweet in enumerate(sntwitter.TwitterSearchScraper('from:TheHoopCentral').get_items()):
if i > 100:
break
tweets_list1.append([tweet.content, tweet.id,tweet.likeCount, tweet.retweetCount, tweet.replyCount, tweet.user.username])
print(tweets_list1)
tweets_df1 = pd.DataFrame(tweets_list1, columns=['text', 'Tweet id','LikeCount', 'RetweetCount', 'ReplyCount', 'Username'])
tweets_df1.head()
#updating engagement
tweets_list1 = []
for i, tweet in enumerate(sntwitter.TwitterSearchScraper('TheHoopCentral').get_items()):
if tweet.likeCount > tweets_list1[2]:
tweets_list1.insert(2, tweet.likeCount)
elif i > 100:
break
错误
IndexError Traceback (most recent call last)
<ipython-input-26-c679f6d5eecc> in <module>
3 tweets_list1 = []
4 for i, tweet in enumerate(sntwitter.TwitterSearchScraper('TheHoopCentral').get_items()):
----> 5 if tweet.likeCount > tweets_list1[2]:
6 tweets_list1.insert(2, tweet.likeCount)
7 elif i > 100:
IndexError: list index out of range
在我看来,主要问题在于更新参与部分中 tweets_list1 的重新分配。
在执行循环逻辑
之前,您似乎正在将一个空列表分配给变量tweets_list1
tweets_list1 = [] # <-- Here
for i, tweet in enumerate(sntwitter.TwitterSearchScraper('TheHoopCentral').get_items()):
if tweet.likeCount > tweets_list1[2]:
tweets_list1.insert(2, tweet.likeCount)
elif i > 100:
break
然后,在第一个循环中,您将尝试访问空列表的第 3 个元素,从而导致错误。
tweets_list1 = []
for i, tweet in enumerate(sntwitter.TwitterSearchScraper('TheHoopCentral').get_items()):
if tweet.likeCount > tweets_list1[2]: # <-- Here
tweets_list1.insert(2, tweet.likeCount)
elif i > 100:
break
我已经开始使用 snscrape 为我的项目获取 Twitter 数据。我正在以列表格式输出数据并使用 pandas 来正确地可视化它。因为参与数据不是恒定的并且会持续更新。我正在尝试使用 for 循环和 if 语句来比较和更新它(如果需要)但是当我尝试使用索引访问列表中的特定属性时,如:
点赞、转发和回复计数
它给我一个索引错误。
脚本
#get data
import snscrape.modules.twitter as sntwitter
import pandas as pd
tweets_list1 = []
for i, tweet in enumerate(sntwitter.TwitterSearchScraper('from:TheHoopCentral').get_items()):
if i > 100:
break
tweets_list1.append([tweet.content, tweet.id,tweet.likeCount, tweet.retweetCount, tweet.replyCount, tweet.user.username])
print(tweets_list1)
tweets_df1 = pd.DataFrame(tweets_list1, columns=['text', 'Tweet id','LikeCount', 'RetweetCount', 'ReplyCount', 'Username'])
tweets_df1.head()
#updating engagement
tweets_list1 = []
for i, tweet in enumerate(sntwitter.TwitterSearchScraper('TheHoopCentral').get_items()):
if tweet.likeCount > tweets_list1[2]:
tweets_list1.insert(2, tweet.likeCount)
elif i > 100:
break
错误
IndexError Traceback (most recent call last)
<ipython-input-26-c679f6d5eecc> in <module>
3 tweets_list1 = []
4 for i, tweet in enumerate(sntwitter.TwitterSearchScraper('TheHoopCentral').get_items()):
----> 5 if tweet.likeCount > tweets_list1[2]:
6 tweets_list1.insert(2, tweet.likeCount)
7 elif i > 100:
IndexError: list index out of range
在我看来,主要问题在于更新参与部分中 tweets_list1 的重新分配。
在执行循环逻辑
之前,您似乎正在将一个空列表分配给变量tweets_list1tweets_list1 = [] # <-- Here
for i, tweet in enumerate(sntwitter.TwitterSearchScraper('TheHoopCentral').get_items()):
if tweet.likeCount > tweets_list1[2]:
tweets_list1.insert(2, tweet.likeCount)
elif i > 100:
break
然后,在第一个循环中,您将尝试访问空列表的第 3 个元素,从而导致错误。
tweets_list1 = []
for i, tweet in enumerate(sntwitter.TwitterSearchScraper('TheHoopCentral').get_items()):
if tweet.likeCount > tweets_list1[2]: # <-- Here
tweets_list1.insert(2, tweet.likeCount)
elif i > 100:
break