2015-07-20 160 views
0

我使用yahoo_finance模塊從Y!F提取數據。 A型錯誤:Python,不支持索引的對象

'Share' object does not support indexing

正在發生。

任何想法?

import yahoo_finance 
from yahoo_finance import Share 

class ticker(object): 
    def __init__(self, symbol): 

     self.price = symbol.get_price() 
     self.change = symbol.get_change() 
     self.volume = symbol.get_volume() 

symbol = ['GOOG','AAPL','MSFT'] 

lenSymbol = len(symbol) 
cc = 0 

while cc < lenSymbol: 
    stringSymb = symbol[cc] 
    symbol = Share(stringSymb) #TypeError occurring here 
    c = ticker(symbol) 
    output = ([c.volume, c.price, c.change, c.volume]) 
    print (output) 
    cc += 1 
+0

請提供*全回溯*,而不僅僅是最後一行。 –

+0

我敢打賭,這個問題是通過'Share'實例'symbol = Share(...)'來勾畫出符號= ['GOOG',...]'的列表...... – jonrsharpe

回答

0

您使用symbol兩次:

symbol = ['GOOG','AAPL','MSFT'] 

而且在循環:

symbol = Share(stringSymb) 

似乎Shareyahoo_finance不支持索引。

嘗試將其更改爲以下:

import yahoo_finance 
from yahoo_finance import Share 

class ticker(object): 
    def __init__(self, symbol): 
     self.price = symbol.get_price() 
     self.change = symbol.get_change() 
     self.volume = symbol.get_volume() 

symbols = ['GOOG','AAPL','MSFT'] 

cc = 0 
while cc < len(symbols): 
    stringSymb = symbols[cc] 
    symbol = Share(stringSymb) 
    c = ticker(symbol) 
    output = ([c.volume, c.price, c.change, c.volume]) 
    print (output) 
    cc += 1 

輸出:

['11164943', '672.93', '+93.08', '11164943'] 
['46164710', '129.62', '+1.11', '46164710'] 
['29467107', '46.62', '-0.04', '29467107'] 
1

您重新分配列表symbol到:

symbol = Share(stringSymb) 

然後下一個循環,你正試圖指數symbol

stringSymb = symbol[cc] 

而作爲錯誤狀態時,Share對象,您重新分配symbol,不支持索引。