0

私がやろうとしているのは、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 を使用するよりも優れています。

4

2 に答える 2

0
  1. re.findallリストオブジェクトを返す場合、リストの最初のオブジェクトを取得したい場合があります。

  2. str.replace次のような文字列オブジェクトからのみ使用できますprice.replace('a', 'b')

  3. 1 つのセルにアクセスするws.cell('F5')代わりに使用する必要があります。ws.cell(1,1)

于 2013-10-06T06:16:16.187 に答える