【问题标题】:How should one go about collecting data from a .CSV file using Python?应该如何使用 Python 从 .CSV 文件中收集数据?
【发布时间】:2012-10-16 00:46:06
【问题描述】:

我正在尝试使用 Yahoo!使用 Python 收集当前股票报价的 Finance API,这是我特别陌生的一种语言。雅虎! Finance API 似乎以可下载的 .CSV 文件形式提供他们的数据。

我想知道使用这些数据的最佳方式是什么?下载文件再阅读效率低吗?有没有一种方法可以将其转换为我可以使用 urllib 之类的东西解析的 JSON 或 XML 文件?

我得到的 .CSV 正在以下页面上生成,在这种情况下是 Microsoft (MSFT) 的报价:

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

提前非常感谢。

【问题讨论】:

    标签: python xml json csv yahoo-api


    【解决方案1】:

    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
    

    【讨论】:

    • 感谢您的快速回答!我会阅读该文档。
    • Python可以通过访问Yahoo链接自动下载csv文件吗?
    【解决方案2】:

    基于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'}
    

    for循环中的row是哈希表,好处理

    【讨论】:

      猜你喜欢
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2015-09-01
      • 2014-12-22
      • 2018-07-04
      • 2021-08-26
      • 1970-01-01
      相关资源
      最近更新 更多