【问题标题】:Writing Values From Python into Excel将 Python 中的值写入 Excel
【发布时间】:2013-10-12 20:12:45
【问题描述】:

我要做的是通过将 Yahoo Finance 的股票价格放入电子表格中来使这行代码工作。我问了很多人,我研究了这个问题,但我还没有解决。

这是有问题的代码行:

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

【问题讨论】:

    标签: python excel concatenation


    【解决方案1】:
    1. re.findall返回一个列表对象,你可能想获取列表的第一个对象。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这是一个有趣的想法......但是我应该把那个代码放在哪里?我想要 Excel 文件稍后处理数据。
      猜你喜欢
      • 2018-10-17
      • 1970-01-01
      • 2021-12-01
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多