Python将数据转为序列
我从这个网址上获取的“idata”需要转换成一个序列,我该怎么把它变成序列呢?
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
2 个回答
1
我猜根据这个网址,你是在下载CSV格式的数据。因此,你可能想用一个CSV读取器来解析这些数据。
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)
当然,这里假设你的列的顺序和数组中的元素顺序是一样的。