首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ijson从列表中解析

Ijson从列表中解析
EN

Stack Overflow用户
提问于 2017-08-18 10:52:08
回答 1查看 2.2K关注 0票数 0

我有一个列表,其中每个项目都包含JSON数据,所以我尝试使用Ijson解析数据,因为数据负载将是巨大的。

这就是我想要达到的目标:

代码语言:javascript
复制
article_data=#variable which contains the list
parser = ijson.parse(article_data)
for id in ijson.items(parser, 'item'):
    if(id['article_type'] != "Monthly Briefing" and id['article_type']!="Conference"):
        data_article_id.append(id['article_id'])
        data_article_short_desc.append(id['short_desc'])
        data_article_long_desc.append(id['long_desc'])

这是我得到的错误:

AttributeError:“生成器”对象没有属性“读取”

我想把list转换成string,然后尝试在Ijson中解析,但是它失败了,给了我同样的错误。

有什么建议吗?

代码语言:javascript
复制
data_article_id=[] 
data_article_short_desc=[] 
data_article_long_desc=[] 

for index in article_data: 
    parser = ijson.parse(index)
    for id in ijson.items(parser, 'item'):
        if(id['article_type'] != "Monthly Briefing" and id['article_type']!="Conference"):
            data_article_id.append(id['article_id'])
            data_article_short_desc.append(id['short_desc'])
            data_article_long_desc.append(id['long_desc'])

既然在名单上,我也试过这个..。但这也让我犯了同样的错误。

“生成器”对象没有属性“读取”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-23 07:01:15

我假设您有一个要解析的字节字符串json对象的列表。

ijson.items(JSON,前缀)以一个可读的字节对象作为输入。也就是说,它以打开的文件或类似文件的对象作为输入。具体来说,输入应该是字节类文件对象.

如果使用Python3,则可以使用io模块和io.BytesIO创建内存中的二进制流。

示例

假设输入为b'{"id":"ab"}',b'{"id":"cd"}‘

代码语言:javascript
复制
list_json = [b'{"id": "ab"}', b'{"id": "cd"}']
for json in list_json:
    item = ijson.items(io.BytesIO(json), "")
    for i in item:
        print(i['id'])
Output: 
    ab
    cd
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45754910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档