Как следует собирать данные из файла .CSV с помощью Python?

Я пытаюсь использовать Yahoo! Finance API для сбора текущих котировок акций с использованием Python, языка, в котором я особенно плохо знаком. Yahoo! Финансовый API предлагает свои данные в виде файла .CSV, который можно загрузить.

Мне интересно, как лучше всего использовать эти данные? Неэффективно ли скачивать файл, а затем читать его; есть ли способ преобразовать его в файл JSON или XML, который я могу проанализировать, используя что-то вроде urllib?

.CSV, который я получаю, создается на следующей странице, в данном случае цитата для Microsoft (MSFT):

http://finance.yahoo.com/d/quotes.csv?s=MSFT&f=snl1

Спасибо заранее.


person zch    schedule 16.10.2012    source источник


Ответы (2)


Python имеет встроенный модуль csv.

http://docs.python.org/library/csv.html

Чтобы ответить на ваш вопрос о загрузке:

file = r"http://finance.yahoo.com/d/quotes.csv?s=MSFT&f=snl1"

import urllib
text = urllib.urlopen(file).read()

>>> print text 
... "MSFT","Microsoft Corpora",29.51
person kreativitea    schedule 16.10.2012
comment
Спасибо за быстрый ответ! Я прочитаю эту документацию. - person zch; 16.10.2012
comment
Может ли Python автоматически загрузить CSV-файл, просто перейдя по ссылке Yahoo? - person zch; 16.10.2012

На основе модуля csv и DictReader будет проще анализировать данные после urlopen, я повторно использую приведенный выше код из @kreativitea.

import csv
import urllib

file = r"http://finance.yahoo.com/d/quotes.csv?s=MSFT&f=snl1"

quotefile = urllib.urlopen(file)
fieldheaders = ["abbr","name","index"]
reader = csv.DictReader(quotefile,fieldnames=fieldheaders)

for row in reader:
    print row

результат

$ quote.py
{'index': '29.51', 'abbr': 'MSFT', 'name': 'Microsoft Corpora'}

row в цикле for — это хэш-таблица, с которой легко работать

person Larry Cai    schedule 16.10.2012