无法在 iPython 中加载数据,以下示例来自 "Python for data analysis" ch2

fail to load data in iPython, following example from "Python for data analysis" ch2

我刚刚开始学习 Python Wes McKinnney 的书 "Python for data analysis"。我使用 Enthought Canopy 1.5.2-win-64 安装了 Python(因为 Enthought 似乎不再分发 EPDFree,这是书中推荐的)。

我在 Wes 的第一个示例中遇到障碍,这使我无法完成本章的其余部分。第一个示例读取位于 https://github.com/pydata/pydata-book/tree/master/ch02 的文本文件的第一行。这是代码:

ipython --pylab
path = 'ch02/usagov_bitly_data2012-03-16-1331923249.txt'
open(path).readline()

我只是得到一个换行符输出 '\n' 而书中的输出是:

'{ "a": "Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/535.11
(KHTML, like Gecko) Chrome\/17.0.963.78 Safari\/535.11", "c": "US", "nk":1,
"tz": "America\/New_York", "gr": "MA", "g": "A6qOVH", "h": "wfLQtf", "l":
"orofrog", "al": "en-US,en;q=0.8", "hh": "1.usa.gov", "r":
"http:\/\/www.facebook.com\/l\/7AQEFzjSi\/1.usa.gov\/wfLQtf", "u":
"http:\/\/www.ncbi.nlm.nih.gov\/pubmed\/22415991", "t":1331923247, "hc":
1331822918, "cy": "Danvers", "ll": [ 42.576698, -70.954903 ] }\n'

不幸的是,我还不知道 JSON,但 Wes Mckinney 网站上提供的文件似乎与书中的不完全相同。不确定这是否是我问题的根源。

我是 Python 的新手,如有任何帮助,我们将不胜感激!

您需要使用 readlines 来获取所有行的列表:

open(path).readlines() # readlines

readline() 读取一行。

您还可以遍历每一行:

with open(path) as f: # with closes your files
    for line in f:
          print(line)

迭代每一行你应该得到:

{ "a": "Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/535.11 (KHTML, like Gecko) Chrome\/17.0.963.78 Safari\/535.11", "c": "US", "nk": 1, "tz": "America\/New_York", "gr": "MA", "g": "A6qOVH", "h": "wfLQtf", "l": "orofrog", "al": "en-US,en;q=0.8", "hh": "1.usa.gov", "r": "http:\/\/www.facebook.com\/l\/7AQEFzjSi\/1.usa.gov\/wfLQtf", "u": "http:\/\/www.ncbi.nlm.nih.gov\/pubmed\/22415991", "t": 1331923247, "hc": 1331822918, "cy": "Danvers", "ll": [ 42.576698, -70.954903 ] }
{ "a": "GoogleMaps\/RochesterNY", "c": "US", "nk": 0, "tz": "America\/Denver", "gr": "UT", "g": "mwszkS", "h": "mwszkS", "l": "bitly", "hh": "j.mp", "r": "http:\/\/www.AwareMap.com\/", "u": "http:\/\/www.monroecounty.gov\/etc\/911\/rss.php", "t": 1331923249, "hc": 1308262393, "cy": "Provo", "ll": [ 40.218102, -111.613297 ] }
{ "a": "Mozilla\/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident\/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)", "c": "US", "nk": 1, "tz": "America\/New_York", "gr": "DC", "g": "xxr3Qb", "h": "xxr3Qb", "l": "bitly", "al": "en-US", "hh": "1.usa.gov", "r": "http:\/\/t.co\/03elZC4Q", "u": "http:\/\/boxer.senate.gov\/en\/press\/releases\/031612.cfm", "t": 1331923250, "hc": 1331919941, "cy": "Washington", "ll": [ 38.900700, -77.043098 ] }
  ...............

您必须添加一个空行作为文件的开头,否则您至少会得到第一行。

磁盘上该文件的实际内容是什么?请注意,您传递给 open(path).readline()path 是相对于您启动 ipython --pylab 时所在的当前目录的。但是,您没有收到 "File not found" 错误,所以我假设文件存在于正确的位置。

您是如何检索文件以在本地使用的?书不具体。你去github页面下载了zip包了吗?使用 Git 下载整个存储库?在浏览器中右键单击以保存文件?您确定下载的是 raw 文件而不是代表该文件的 HTML 页面吗?

编辑:OP 确认他们拥有的文件实际上是来自浏览器的右键单击保存的文件,实际上是 HTML 文件,而不是原始 json 文件。通过从存储库的首页下载整个包作为 Zip,并在该包内工作,问题得到解决。