2010-09-03 2 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

Спасибо, я?. am tring для вставки данных в Sqlite с использованием csr.executemany ('INSERT INTO test.prices VALUES (?,?,?,?)', idata) pyodbc.ProgrammingError: Второй параметр для выполнения должен быть последовательностью. для строки в idata: csr.execute ('INSERT INTO test.prices VALUES (?,?,?,?)', Idata) pyodbc.ProgrammingError: ('SQL con tains 4 параметра маркеры, но 1 параметр был поставлен ',' HY000 ') – Merlin

+0

См. мой обновленный ответ для возможного решения. –

+0

спасибо, за нашу помощь ...... складе, цена, объем, stime = line ValueError: требуется больше 0 значений для распаковки – Merlin

1

Я думаю, на основе URL-адрес, который вы загружаете в формате CSV. Таким образом, вы, вероятно, захотите проанализировать его с помощью CSV reader.

+0

«для строки в IDATA: печать строки дает мне странные данные – Merlin

+0

Определить странно, что делает данные выглядеть, когда вы просто загрузите его в браузере, как – Seth

+0

данные идут один символ прямо – Merlin

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