使用列表理解从URL和过程数据读取
问题描述:
我是python的新手,我试图从URL读取数据。基本上我正在阅读历史股票数据,得到收盘价并将收盘价保存在一个列表中。收盘价位于每条线的第4指数(第5列)。我想在列表理解中完成所有这些。使用列表理解从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()
上面的代码只是正常工作。我能够读取和获取所需的数据。然而,出于好奇,列表理解的代码能够以更简单还是更简单的方式编写?
谢谢...
答
我也尝试了不同的方式,这是我可以如何通过不同形式的列表中理解的做同样的:
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]
第一个是更好,因为它读取一行一行地保存内存。当然,它更简单,更易于理解。