Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python3.4从Yahoo读取股票数据,但无法删除数据_Python_Python 3.x_Yahoo Finance - Fatal编程技术网

使用Python3.4从Yahoo读取股票数据,但无法删除数据

使用Python3.4从Yahoo读取股票数据,但无法删除数据,python,python-3.x,yahoo-finance,Python,Python 3.x,Yahoo Finance,我正在使用Python 3.4,并试图从Yahoo finance下载数据。 下面是我的代码: import urllib.request url = 'http://ichart.finance.yahoo.com/table.csv?s=aapl&a=6&b=21&c=2014&d=6&e=29&f=2014' csv = urllib.request.urlopen(url).readlines() print(csv) ds

我正在使用Python 3.4,并试图从Yahoo finance下载数据。
下面是我的代码:

import urllib.request  
url = 'http://ichart.finance.yahoo.com/table.csv?s=aapl&a=6&b=21&c=2014&d=6&e=29&f=2014'  
csv = urllib.request.urlopen(url).readlines()  
print(csv)  
ds,open_,high,low,close,volume,adjc = csv[1].strip().split('\n')
结果:

[b'Date,Open,High,Low,Close,Volume,Adj Close\n', b'2014-07-29,99.33,99.44,98.25,98.38,43031400,98.38\n', b'2014-07-28,97.82,99.24,97.55,99.02,55239000,99.02\n', b'2014-07-25,96.85,97.84,96.64,97.67,43403200,97.67\n', b'2014-07-24,97.04,97.32,96.42,97.03,45663100,97.03\n', b'2014-07-23,95.42,97.88,95.17,97.19,92844700,97.19\n', b'2014-07-22,94.68,94.89,94.12,94.72,54914800,94.72\n', b'2014-07-21,94.99,95.00,93.72,93.94,38887700,93.94\n']  

Traceback (most recent call last):  
  File "<pyshell#39>", line 1, in <module>  
    ds,open_,high,low,close,volume,adjc = csv[1].strip().split('\n')  
TypeError: Type str doesn't support the buffer API
[日期,开盘,高,低,收盘,成交量,开盘,开盘,高,高,低,收盘,多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多多收盘,收盘,收盘,收盘,收盘,收盘,收盘,收盘,收盘,收盘,收盘,收盘,收盘,收盘,交易,收盘,收盘,收盘,收盘,收盘,收盘,收盘,交易,收盘,收盘,收盘,交易,收盘,收盘,交易量,收盘,收盘,收盘,收盘,交易量,交易量,收盘,收盘,收盘,收盘,收盘,收盘,收盘,交易量,收盘,收盘,收盘,收盘,收盘,交易量,交易量,收盘,收盘,收盘,交易,收盘,收盘,收盘,收盘,收盘,收盘,收盘,收盘,交易,收收收收收收收,交易,交易,交易,收盘,收盘,收盘,收盘,收盘,交易,交易2007-07-22,94.68,94.89,94.12,94.7254914800,94.72\n',b'2014-07-21,94.99,95.00,93.72,93.9438887700,93.94\n']
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ds,打开,高,低,关闭,卷,adjc=csv[1].strip().split('\n')
类型错误:类型str不支持缓冲区API
现在我面临的问题是,当我试图分割csv并将单个行存储为单独的值时。 所以我想拆分并存储报价。但我无法这样做,因为前面有字符“b”,后面有字符“\n”。你们能帮我拆分报价或建议其他写作解决方案吗

我真的很感谢你的帮助。 谢谢

1)我发现这个库比
urllib.request
更容易使用

2) 如果数据是CSV格式的,我建议使用模块,而不是自己解析文件

我会这样做:

#!/usr/bin/python3

import requests
import csv
import pprint

url='http://ichart.finance.yahoo.com/table.csv?s=aapl&a=6&b=21&c=2014&d=6&e=29&f=2014'

http_response=requests.get(url)
stock_reader=csv.reader(http_response.text.splitlines())
stock_data=list(stock_reader)
pprint.pprint(stock_data)

ds,open_,high,low,close,volume,adjc = stock_data[1]
print("The stock opened at {} on {}".format(open_,ds))
print("The average closing price was {0:.02f}".format(
    sum(float(item[4]) for item in stock_data[1:])/len(stock_data[1:])))
为方便起见,请尝试:

http_response=requests.get(url)
stock_reader=csv.DictReader(http_response.text.splitlines())
stock_data=list(stock_reader)

print("The stock opened at {Open} on {Date}".format(**stock_data[0]))
print("The average closing price was {0:.02f}".format(
    sum(float(item['Close']) for item in stock_data)/len(stock_data)))