繁体   English   中英

在Python中使用嵌套的for循环迭代推文的JSON文件

[英]Using nested for loops to iterate through JSON file of tweets in Python

因此,我是Python的新手,但我知道我要完成的工作。 基本上,我将来自twitter的tweet的输出以JSON文件加载到Python中。 我需要做的是遍历推文以访问“文本”键,该键具有每个推文的文本,因为这就是我将要用于主题建模的内容。 因此,我发现“文本”三重嵌套在此数据结构中,并且很难找到正确的方法来编写for循环代码以遍历数据集并从每条推文中提取“文本”。

这是JSON结构的样子: https : //pastebin.com/fUH5MTMx

因此,我发现我想要的“文本”键在[hits] [hits] [_ source]之内。 我不知道的是合适的for循环遍历_source并提取这些文本。 到目前为止,这是我的代码(再次,很遗憾,如果尝试代码无法实现,我将非常抱歉):

for hits in tweets["hits"]["hits"]:
        for _source in hits:
            for text in _source:
                for item in text:
                    print(item)

还尝试了这个:

for item in tweets['hits']["hits"]["_source"]:
        print(item['text'])

但是我一直收到第一个语法错误,然后是第二个“ TypeError:列表索引必须是整数或分片,而不是str”。 我了解我需要指定某种方式来尝试访问此列表,并且为了显示其列表而缺少一些东西,并且我没有在寻找整数作为迭代的输出...(我为此使用Python中的JSON模块,将Mac与Spyder中的Python3一起使用)

任何见解将不胜感激! 这种多重嵌套让我很困惑。

['hits']["hits"]不是带有["_source"]字典
但包含一个或多个具有["_source"]项目的列表
它的意思是

tweets['hits']["hits"][0]["_source"]

tweets['hits']["hits"][1]["_source"]

tweets['hits']["hits"][2]["_source"]

所以这应该工作

for item in tweets['hits']["hits"]:
    print(item["_source"]['text'])

不知道是否意识到这一点,但是JSON转换为Python字典,而不是列表。 无论如何,让我们进入这个巢。

tweets['hits']会给你另外一个字典。

tweets['hits']['hits']将给您一个列表(请注意方括号)

这显然是字典列表,在这种情况下(不确定是否会一直使用),您要查找的带有“ _source”键的字典是第一个字典,因此:

tweets['hits']['hits'][0]将为您提供您想要的字典。 然后,最后:

tweets['hits']['hits'][0]['_source']应该给您文本。

第二个“匹配”的值是一个列表。

尝试:

for hit in tweets["hits"]["hits"]:
     print(hit["_source"]["text"])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM