0

在Ilya Grigorik 提供的http://www.githubarchive.org/中,我发现在许多 gz 文件中,一些连续的事件被记录到同一个文件中。

例如在 2011-03-15-21.json.gz

要完成上述操作:wget http://data.githubarchive.org/2011-03-15-21.json.gz

例如,在这个 gz 中,如果您搜索 id 1484832 ,您会发现 2 个连续事件(jsons)在同一行,请参阅 http://codebeautify.org/jsonviewer/2cb891

同一行中的两个 json 是

http://codebeautify.org/jsonviewer/c7e18e

http://codebeautify.org/jsonviewer/945d56

.

有什么影响?当我加载每一行并用python加载它时(为什么是python?因为我觉得python在处理jsons方面很舒服)json.loads它说它是无效的,因为它是两个jsons的组合。

问题 :

1)当您处理该 github 存档数据时,您是如何解决这些错误的?

2)我的本地数据已经有了。那么我该如何克服这个问题。我应该编写特定于这种情况的代码来克服吗?我写的代码就像

jsonlist = line.split('}{')
json.loads(jsonlist[0] + '}', "ISO-8859-1") # load and navigate through this json 
json.loads('{' + jsonlist[1], "ISO-8859-1") # load and navigate through this json
4

1 回答 1

0

我在这里得到了解决方案

1)当您处理该 github 存档数据时,您是如何解决这些错误的? https://github.com/vadasg/githubarchive-parser/blob/master/src/FixGitHubArchiveDelimiters.rb

. 该脚本消除了同一行出现两个或多个事件的问题。所以现在运行这个脚本后,jsons 出现在不同的行中。

2)我的本地数据已经有了。那么我该如何克服这个问题。我应该编写特定于这种情况的代码来克服吗?我写的代码就像这个脚本消除了编写我上面提到的代码的必要性。

笔记 :

在 github的github 归档项目上找到的相关问题

  1. https://github.com/igrigorik/githubarchive.org/issues/53

  2. https://github.com/igrigorik/githubarchive.org/issues/17

警告 :

当我运行这个脚本时,我得到了一个与使用的编码有关的错误。因为默认情况下,该Yajl::Parser.parse(jsonInputFile) 行检查它解析的字符是否遵循 UTF-8 编码,如果不是,它将抛出错误。由于 github 数据还包含非 UTF-8 字符,因此在我们的案例中也会抛出此错误。所以绕过这个问题(或者可能是一个修复)我把它作为

Yajl::Parser.parse(jsonInputFile, :check_utf8 => false)

如有疑问,请参阅文档:http ://rdoc.info/github/brianmario/yajl-ruby/Yajl/Parser.parse

于 2014-07-23T05:17:08.493 回答