Python将数据转为序列

0 投票
2 回答
1728 浏览
提问于 2025-04-16 03:41

我从这个网址上获取的“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

Python网址下载

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)

当然,这里假设你的列的顺序和数组中的元素顺序是一样的。

撰写回答