从Python写入数据到Excel

我试图做的是通过从雅虎财经的股票价格放到电子表格中获得这一行的代码工作。 我问了很多人,我已经研究了这个问题,但是我没有得到它的工作。

这是代码的麻烦行:

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

我得到的错误喜欢,“replace”需要一个“str”对象,但收到一个“列表”或“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进行数据分析要好,因为它对开源友好。

我甚至不认为你需要使用EXCEL API来做到这一点,你只是离线工作,所以使用CSV格式编写财务股票价格,然后使用EXCEL打开CSV文件。 像这样(psudo代码,不是确切的一个):

 with( f=open( "a.csv" ) ): f.writeline( ",".join(l) ); 
  1. re.findall返回一个列表对象,你可能想要得到列表的第一个对象。

  2. 你只能使用string对象的price.replace('a', 'b') ,比如price.replace('a', 'b')

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