0

我正在尝试做的是通过将雅虎财经的股票价格放入电子表格中来使这行代码工作。我问了很多人,我已经研究了这个问题,但我还没有得到它的工作。

这是代码的麻烦行:

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

我收到错误之类的错误,“replace”需要一个“str”对象,但每次我修改它时收到一个“list”或“int”对象都没有属性。提前感谢您的帮助。

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 进行数据分析更好,因为它是开源友好的。

4

2 回答 2

2

我什至认为您不需要 EXCEL API 来执行此操作,您只是离线工作,因此使用 CSV 格式编写金融股票价格,然后使用 EXCEL 打开 csv 文件。像这样(伪代码,不是确切的代码):

with( f=open( "a.csv" ) ):
    f.writeline( ",".join(l) );
于 2013-10-06T03:00:47.380 回答
0
  1. re.findall返回一个列表对象,您可能想要获取列表的第一个对象。

  2. 您只能str.replace从字符串对象中使用,例如price.replace('a', 'b')

  3. 应该使用ws.cell('F5')而不是ws.cell(1,1)访问一个单元格。

于 2013-10-06T06:16:16.187 回答