如何修复索引值1超出范围。无法通过twitter获取状态函数获取变量以正确传递

问题描述 投票:0回答:1

附加变量不使用获取状态来检索推文文本


我有一个推文ID的列表,在我的计算机上的excel文件中可能大约有50,000个。我想创建一段代码,允许我从推文中提取文本,然后我可以分析......

我创建了一个变量'tweetref'来存储我可以传递的推文ID,以获取状态等以获取推文文本。我被告知很多这些推文可能不再存在,我无法分辨哪一个来自id,这就是为什么我做了'传递'除了,希望忽略所有的失败,只是得到那些工作。使用firehose api收集对我来说太贵了。

它没有吐出任何文本,即使手动替换'tweet = api.get_status(tweetref)'中的tweetref' - 使用下面注释的数字(38387433561128960),打印实际的推文

我试图从tweet ref获得第二个索引导致'列表索引超出范围' - 不确定为什么因为列表中应该有超过20个变量。不知道我做错了什么?

编辑 - 改变了

“tweetref.append(数据列表[30:50])”

“tweetref.extend(数据列表[30:50])”

这有助于使所有ID成为“tweetref”中的单个元素,并允许我正确地调用索引。但是,尽管如此,带有获取状态的第二个“for”循环仍然不会从推文中打印任何文本

# Import twitter related packages
import json
import tweepy

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream

#import request style packages

import requests
from urllib.request import urlopen, Request

# Import excel related packages

import xlrd
import openpyxl

# Import visualisation packages

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# Store OAuth authentication credentials in relevant variables
access_token = "private"
access_token_secret = "private"

consumer_key = "private"
consumer_secret = "private"

# Pass OAuth details to tweepy's OAuth handler

auth = tweepy.OAuthHandler("private", "private")
auth.set_access_token("private", "private")

api = tweepy.API(auth)

# Read and write to excel

dataFileUrl = R"C:/Users/ebaba/Desktop/algeria1.xlsx"


# Create pandas data frame out of Tweet ID Column of file

data = pd.read_excel(dataFileUrl, usecols = ['Tweet'])

# Convert data frame into a list

datalist = data.values.tolist()

tweetref = []

for t in range (0,20):

    tweetref.append(datalist[30:50])

    print(tweetref[1])

for i in range (0,1):

     try:

        tweet = api.get_status(tweetref)

#38387433561128960 - Example Working Tweet - N.44

        print(tweet.text)

     except:

        pass




Expected result would include the tweet 

'RT @mattseaton: Another fascinating dispatch from inside the pro-democracy movement in Algiers, from Karima Bennoune

which is in the datalist[30:50] range

Actual Result

Traceback (most recent call last):
  File "C:\Users\ebaba\Desktop\example6.py", line 56, in <module>
    print(tweetref[1])
IndexError: list index out of range
[Finished in 16.902s]
python excel indexing twitter tweepy
1个回答
0
投票

第一次通过这个for循环:

tweetref = []
for t in range (0,20):
    tweetref.append(datalist[30:50])
    print(tweetref[1])

您的代码会将一个列表附加到之前为空的tweetref。所以(可能)20项的列表成为tweetref的元素0。这就是为什么当代码尝试访问tweetref[1]时索引超出范围的原因。

如果你想要datalist的所有(也许)20个元素成为tweetref的个别元素那么你需要做一个

    tweetref.extend(datalist[30:50])

要么

    tweetref += datalist[30:50]

将列表附加到先前空的tweetref会产生一个包含一个元素的列表,该元素本身就是(可能)20个元素的列表。

© www.soinside.com 2019 - 2024. All rights reserved.