[英]IndexError: List index out of range - Python CSV
我正在使用tweepy從Twitter提取10條推文,並將其存儲在CSV中,以供日后在前端網頁上顯示。 我的代碼每60分鍾刷新一次,在某些時候,我會收到“ IndexError”。
以下是確切的錯誤:
返回ks [5]
IndexError:列表索引超出范圍
以下是從CSV檢索特定推文的功能:
def tweet6(self):
with codecs.open('HELLOTWITTER.csv', 'r', encoding='utf-8', errors='ignore') as f:
reader = csv.reader(f)
d = {}
for i, row in enumerate(reader):
d[row[0]]=row[1:]
if (i>=10):
break
ks=list(d)
return (ks[5])
盡管有時會出現此錯誤,但我無法弄清楚為什么會發生此錯誤,盡管每次刷新整個代碼時CSV都會將所有10條tweet寫入其中。 另外,如果我再次運行代碼,錯誤消失了,並且網頁加載時推文沒有任何問題,令人驚訝!
我想念什么? 任何幫助深表感謝! 謝謝!
正如肯·懷特(Ken White)在上述評論中指出的那樣。 該錯誤是由您嘗試訪問列表范圍之外的索引引起的。
發生的是,您的CSV文件中有一個空白行,python無法處理該行,因為您正在調用index 0
即使該index 0
不存在,因此python也會引發異常。
為了解決此錯誤,您需要做的是檢查列表中是否有足夠的元素來運行代碼。 通過使用
if(len(row) < 1):
continue
可能引起問題的另一個地方是您將列表d
放入另一個列表ks
。 然后,您嘗試返回新列表中的第5個對象。 但是,沒有對象,因為您現在有了一個看起來像這樣的列表
ks={{tweet,tweetyouwant,tweet},{list,two,if,present}}
當您期望列表看起來像這樣時
ks={tweet,tweetyouwant,tweet}
為了解決這個問題,只需擺脫ks=list(d)
並在要調用ks
任何地方調用d
您的整個代碼段都應該這樣。
def tweet6(self):
with codecs.open('HELLOTWITTER.csv', 'r', encoding='utf-8', errors='ignore') as f:
reader = csv.reader(f)
d = {}
for i, row in enumerate(reader):
#Verify row is within range
if(len(row) < 1):
continue
#Get the rows values
d[row[0]]=row[1:]
#If past row 10 then break
if (i>=10):
break
#ks=list(d) #Not needed D is already a list
return (d[5]) #return the row of the 6th tweet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.