我正在尝试使用yajl-py解析GitHub存档文件.我相信文件的基本格式是JSON对象流,因此文件本身不是有效的JSON,但它包含的对象.
为了测试这一点,我安装了yajl-py然后使用他们的示例解析器(来自https://github.com/pykler/yajl-py/blob/master/examples/yajl_py_example.py)来尝试解析文件:
python yajl_py_example.py < 2012-03-12-0.json
Run Code Online (Sandbox Code Playgroud)
其中2012-03-12-0.json一个已解压缩的GitHub存档文件.
看来这种事情应该来自他们在Ruby中的参考实现.Python包不处理JSON流吗?
顺便说一句,这是我得到的错误:
yajl.yajl_common.YajlError: parse error: trailing garbage
9478bbc3","type":"PushEvent"}{"repository":{"url":"https://g
(right here) ------^
Run Code Online (Sandbox Code Playgroud)
您需要使用流解析器来读取数据。Yajl 支持流解析,它允许您一次从文件/流中读取一个对象。话虽如此,Python 似乎没有 Yajl 的工作绑定。
py-yajl 已iterload注释掉,不知道为什么:https://github.com/rtyler/py-yajl/commit/a618f66005e9798af848c15d9aa35c60331e6687#L1R264
不是 Python 解决方案,但您可以使用 Ruby 绑定来读取数据并以您需要的格式发出它:
# gem 安装 yajl-ruby
需要“open-uri”
需要“zlib”
需要“yajl”
gz = open('http://data.githubarchive.org/2012-03-11-12.json.gz')
js = Zlib::GzipReader.new(gz).read
Yajl::Parser.parse(js) 做|事件|
打印事件
结尾
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |