[英]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.