我是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()
上面的代码运行正常。我能够读取和获取所需的数据。但是出于好奇,列表理解的代码能否以更简单或更简单的方式编写?
...谢谢
答案 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]
第一个更好,因为它逐行读取文件,这节省了内存。当然,它更简单易懂。