2013-10-06 170 views
0

我想要做的是通過將股票的雅虎財務的價格放入電子表格中來獲得這一行代碼。我問了很多人,我已經研究了這個問題,但是我還沒有得到它的工作。從Python寫入Excel到Excel

這是代碼的麻煩行:

ws.cell(1,i+1).value = str.replace(price','price') 

我得到的錯誤喜歡,「替換」需要‘STR’對象,但收到名單'或‘詮釋’對象有沒有屬性,每次我修改它。感謝提前的幫助。

from openpyxl import Workbook 

import urllib 
import re 

from openpyxl.cell import get_column_letter 

wb = Workbook() 

dest_filename = r'empty_book.xlsx' 

ws = wb.create_sheet() 

ws.title = 'Stocks' 
symbolslist = ["aapl","spy","goog","nflx"] 

i=0 
while i<len(symbolslist): 
    #counts each object as 1 in the list 
    url = "http://finance.yahoo.com/q?s="+symbolslist[i]+"&q1=1" 
    htmlfile = urllib.urlopen(url) 
    htmltext = htmlfile.read() 
    regex = '<span id="yfs_l84_'+symbolslist[i]+'">(.+?)</span>' 
    pattern = re.compile(regex) 
    price = re.findall(pattern,htmltext) 
    print "The price of", symbolslist[i], " is ", price 
    ws.cell(1,i+1).value = str.replace(price','price') 
    i+=1 


wb.save(filename = dest_filename) 

導入CSV模塊比使用Excel進行數據分析,因爲它是開源的友好更好。

回答

2

我甚至不認爲你需要的EXCEL API來做到這一點,你只是離線工作,所以使用CSV格式編寫財務股票價格,然後使用EXCEL打開csv文件。像這樣(psudo代碼,不準確的):

with(f=open("a.csv")): 
    f.writeline(",".join(l)); 
+0

這是一個有趣的想法......但我在哪裏把這些代碼?我想要Excel文件以後處理數據。 –

0
  1. re.findall返回一個列表對象,您可能希望獲取列表的第一個對象。

  2. 你只能使用str.replace從一個字符串對象,如price.replace('a', 'b')

  3. 應該使用ws.cell('F5')而不是ws.cell(1,1)訪問一個細胞。