2010-09-03 50 views
0

的「IDATA」我從這個URL拉到需要變成一個序列,我怎麼把它變成一個序列Python的變化數據到序列

import urllib, csv 

URL = "http://download.finance.yahoo.com/d/quotes.csv?s=%s&f=sl1vt1&e=.csv" 
symbols = ('GGP', 'JPM', 'AIG', 'AMZN','GGP', 'JPM', 'AIG', 'AMZN') 
#symbols = ('GGP',) 

def fetch_quote(symbols): 
    url = URL % '+'.join(symbols) 
    fp = urllib.urlopen(url) 
    try: 
     data = fp.read() 
    finally: 
     fp.close() 
    return data # <======== Return 

idata = fetch_quote(symbols) 
print idata 

Python URL download

回答

1

你是什麼意思的「一個序列」?你可以把它變成一個字典如下。在您製作idata後,請放置此代碼。

stocks = {} 
for line in idata.split("\r\n"): 
    if line == '': 
     continue 

    stock, price, volume, stime = line.split(',') 
    stock = stock[1:-1] 
    price = float(price) 
    volume = int(volume) 
    stime = stime[1:-1] 

    stocks[stock] = (price, volume, stime) 

如果你想成爲更穩健一點,你可以使用csv模塊(添加import csv到您的代碼的頂部),然後使用

reader = csv.reader(idata.split("\r\n")) 

stocks = {} 
for line in reader: 
    if line == '': 
     continue 

    stock, price, volume, stime = line 
    price = float(price) 
    volume = int(volume) 

    stocks[stock] = (price, volume, stime) 

對於插入到數據庫中,以下可以工作

reader = csv.reader(idata.split("\r\n")) 

stocks = [] 
for line in reader: 
    if line == '': 
     continue 

    stock, price, volume, stime = line 
    price = float(price) 
    volume = int(volume) 

    stocks.append((stock, price, volume, stime)) 

csr.executemany('INSERT INTO test.prices VALUES (?,?,?,?)', stocks) 

這當然假設你的列與數組元素的順序相同。

+0

謝謝,我?。 ('INSERT INTO test.prices VALUES(?,?,?,?)',idata) pyodbc.ProgrammingError:executemany的第二個參數必須是一個序列。 (''INSERT INTO test.prices VALUES(?,?,?,?)',idata) pyodbc.ProgrammingError :('SQL con提供了4個參數標記,但提供了1個參數','HY000') – Merlin 2010-09-03 18:05:16

+0

查看我的更新答案以獲得可能的解決方案。 – 2010-09-03 18:28:32

+0

謝謝,對我們有幫助...... 股票,價格,交易量,stime =行 ValueError:需要多個0值才能解包 – Merlin 2010-09-03 18:44:43

1

我猜想基於您以CSV格式下載數據的URL。因此,您可能想要用CSV reader解析它。

+0

「爲行IDATA: 打印行 讓我奇怪的數據 – Merlin 2010-09-03 17:36:44

+0

定義怪異的數據看起來就像當你剛剛下載它在瀏覽器是什麼 – Seth 2010-09-03 17:38:54

+0

數據變爲一個字符直降 – Merlin 2010-09-03 18:06:52