2014-07-21 12 views
0

在Ilya Grigorik提供的http://www.githubarchive.org/中,我發現在許多gz文件中,一些連續事件被記錄到同一個文件中。爲什麼連續事件jsons在githubarchive的某些包中落在同一行?

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

若要獲得上述做到: wget的http://data.githubarchive.org/2011-03-15-21.json.gz

在這個GZ例如,如果你搜索編號1484832,你可以找到該2個連續事件(jsons)是在同一條線上 看到 http://codebeautify.org/jsonviewer/2cb891

在同一行兩個jsons是

的組合

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 

回答

0

我來到這裏

1)你是如何解決這些蟲子樣的,當你處理的是github上歸檔數據的解決方案嗎? https://github.com/vadasg/githubarchive-parser/blob/master/src/FixGitHubArchiveDelimiters.rb

。該腳本消除了在同一行上出現的兩個或多個事件的問題。 所以現在運行這個腳本後,jsons出現在不同的行中。

2)我已經有我的本地數據。所以我該如何克服這個問題。我應該編寫特定於這種情況的代碼來克服嗎?我寫的代碼就像 這個腳本消除了編寫上面提到的代碼的必要性。

注:在github archive project發現,在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

相關問題