2013-10-06 2 views
0

Что я пытаюсь сделать, так это заставить эту строку кода работать, поставив цену от Yahoo Finance на запас в электронную таблицу. Я спросил немало людей, и я исследовал этот вопрос, но я не получил его на работу.Написание значений из Python в Excel

Это беда строка кода:

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

я получаю ошибки любит, «заменить» требует „ул“ объект, но получил „список“ или „ИНТ“ объект не имеет атрибутов каждый раз я изменить это. Спасибо за помощь заранее.

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, а затем откройте файл csv с помощью EXCEL. как этот (код 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), чтобы получить доступ к одной ячейке.

Смежные вопросы