簡體   English   中英

使用Python將來自Yahoo Finance的.csv轉換為列列表

[英]Turning a .csv from yahoo finance into lists of columns with Python

我試圖以.csv的形式從Yahoo Finance中提取數據,然后將第1列和第5列轉換為Python列表。 如果.csv先前已下載,則將列轉換為列表的代碼部分是可以使用的,但是我想做的是將URL中的數據直接導入Python。

我得到的錯誤是“屬性錯誤:'模塊'對象沒有屬性'請求'。” 這是代碼:

import urllib

def data_pull():
#gets data out of a .csv file from yahoo finance, separates specific columns into lists

    datafile = urllib.request.urlretrieve('http://ichart.finance.yahoo.com/table.csv?s=xom&a=00&b=2&c=1999&d=01&e=12&f=2014&g=m&ignore=.csv')
    datafile = open(datafile)

    datelist = [] #blank list for dates
    pricelist = [] #blank list for prices
    for row in datafile:
        datelist.append(row.strip().split(","))
        pricelist.append(row.strip().split(","))

    datelist = zip(*datelist) #rows into columns
    datelist = datelist[0] #turns the list into data from the first column

    pricelist = zip(*pricelist)
    pricelist = pricelist[4] #list gets data from the fifth column

    print datelist
    print pricelist

data_pull()

我是Python和編碼方面的新手。 我知道可能有更有效的方法來執行上述代碼,但是我主要關心的是讓urllib片段正確運行。 預先感謝您的評論。

您需要導入完整的模塊:

import urllib.request

如果不這樣做,則父程序包將不會將子模塊作為屬性。

您可能不想在這里使用urllib.request.urlretrieve() 您通常可以直接在Python中處理響應。 您也可以使用csv模塊讀取數據,而無需拆分:

from urllib.request import urlopen
import io
import csv

url = 'http://ichart.finance.yahoo.com/table.csv?s=xom&a=00&b=2&c=1999&d=01&e=12&f=2014&g=m&ignore=.csv'
reader_input = io.TextIOWrapper(urlopen(url), encoding='utf8', newline='')
reader = csv.reader(reader_input)
next(reader, None) # skip headers
cols = list(zip(*reader))
datelist, pricelist = cols[0], cols[4]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM