Last Updated on 2022-04-11 by Clay
問題描述
今天在我確認前輩遺留下的程式碼時,發現了一個奇怪的問題。我想,那是前輩廢棄沒有在使用、剛好沒刪除掉的程式碼。
看起來是 Python 在使用內置的 csv 模組讀取資料,但是卻在下方查看資料格式時發生:
"_csv.reader" object is not subscriptable
為了能讓程式碼正常運作,以便繼續往下閱讀前輩的程式碼,我查詢了這個問題的排除方式,並記錄如下。
如果我沒記錯,我幾年前曾經遇到過一次這個問題。為了幾年後不要被這個問題卡住,還是老老實實地把這個問題紀錄起來吧。
解決方法
根據錯誤訊息所示,該 _csv.reader 其實是不支援使用索引取值的方式,它返回的是一個迭代器(iterator)。
所以當我們使用像是:
print(csv_data[0])
這樣的方式來取值,則會出現文章開頭所示的報錯。我們需要使用 for
迴圈逐行讀取資料;如果真的需要透過索引取得資料,可以考慮將迭代器化成 list 結構。
list(csv_data)