簡體   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