我对Python很陌生,我正在努力通过观看视频/阅读教程来学习。
我关注如何从Quandl获取数据的this video。我知道python已经有一个特定的模块,但我想学习如何在必要时从网站上获取它。我的问题是,当我尝试在9:50左右模拟代码并打印结果时,python不会分割CSV file
中的行。我知道他正在使用python 2.x,而我正在使用3.4。
这是我使用的代码:
import urllib
from urllib.request import urlopen
def grabQuandl(ticker):
endLink = 'sort_order=desc'#without authtoken
try:
salesRev = urllib.request.urlopen('https://www.quandl.com/api/v1/datasets/SEC/'+ticker+'_SALESREVENUENET_Q.csv?&'+endLink).read()
print (salesRev)
except Exception as e:
print ('failed the main quandl loop for reason of', str(e))
grabQuandl('AAPL')
这就是印刷品:
b'Date,价值\ n2009-06-27,8337000000.0 \ n2009-12-26,15683000000.0 \ n2010-03-27,13499000000.0 \ n2010-06-26,15700000000.0 \ n2010-09-25,20343000000.0 \ N2010 -12-25,26741000000.0 \ n2011-03-26,24667000000.0 \ n2011-06-25,28571000000.0 \ n2011-09-24,28270000000.0 \ n2011-12-31,46333000000.0 \ n2012-03-31,39186000000.0 \ n2012-06 -30,35023000000.0 \ n2012-09-29,35966000000.0 \ n2012-12-29,54512000000.0 \ n2013-03-30,43603000000.0 \ n2013-06-29,35323000000.0 \ n2013-09-28,37472000000.0 \ n2013-12-28 ,57594000000.0 \ n2014-03-29,45646000000.0 \ n2014-06-28,37432000000.0 \ n2014-09-27,42123000000.0 \ n2014-12-27,74599000000.0 \ n2015-03-28,58010000000.0 \ N'
我认为\n
是某种分线器,但它不像视频那样工作。我已经使用read().split()
搜索了可能的解决方案,例如执行for循环,但最好只删除\ n。我无法将输出输入到视频中的表格中。我做错了什么?
答案 0 :(得分:2)
.read()
给你一个字节字符串,当你直接打印它时,你会得到你得到的结果。你可以注意到引号前面的b
,它表示字节串
您应该在打印之前(或使用.read()
直接解码您获得的字符串。例如 -
import urllib
from urllib.request import urlopen
def grabQuandl(ticker):
endLink = 'sort_order=desc'#without authtoken
try:
salesRev = urllib.request.urlopen('https://www.quandl.com/api/v1/datasets/SEC/'+ticker+'_SALESREVENUENET_Q.csv?&'+endLink).read().decode('utf-8')
print (salesRev)
except Exception as e:
print ('failed the main quandl loop for reason of', str(e))
grabQuandl('AAPL')
以上使用utf-8
编码对返回的数据进行解码,您可以使用您想要的任何编码(无论数据编码是什么)。
显示打印行为的示例 -
>>> s = b'asd\nbcd\n'
>>> print(s)
b'asd\nbcd\n'
>>> print(s.decode('utf-8'))
asd
bcd
>>> type(s)
<class 'bytes'>