从URL&读取使用列表理解

时间:2016-09-30 03:23:01

标签: python-3.x list-comprehension urllib

我是python的新手,我正在尝试从URL读取数据。基本上我正在阅读历史股票数据,得到收盘价并将收盘价保存到列表中。收盘价可在每一行的第四个指数(第五列)获得。我希望在列表理解中完成所有这些。

代码段:

from urllib.request import urlopen

URL = "http://ichart.yahoo.com/table.csv?s=AAPL&a=3&b=1&c=2016&d=9&e=30&f=2016"

def downloadClosingPrice():
    urlHandler = urlopen(URL)
    next(urlHandler)
    return [float(line.split(",")[4]) for line in urlHandler.read().decode("utf8").splitlines() if line]

closingPriceList = downloadClosingPrice() 

上面的代码运行正常。我能够读取和获取所需的数据。但是出于好奇,列表理解的代码能否以更简单或更简单的方式编写?

...谢谢

1 个答案:

答案 0 :(得分:0)

我确实尝试了各种方法,这就是我可以使用不同形式的列表理解来做同样的事情:

return [float(line.decode("utf8").split(",")[4]) for line in urlHandler if line]
#     return [float(line.decode("utf8").split(",")[4]) for line in urlHandler.readlines() if line]
#     return [float(line.split(",")[4]) for line in urlHandler.read().decode("utf8").splitlines() if line]

第一个更好,因为它逐行读取文件,这节省了内存。当然,它更简单易懂。