2013-05-13 81 views
0

我想收集來自Twitter的一些主題標籤。 閱讀中,我需要得到實體的文檔 https://dev.twitter.com/docs/platform-objects/tweets訪問列表中的項目

"entities": 
{ 
    "hashtags":[], 
    "urls":[], 
    "user_mentions":[] 
} 

我目前能夠訪問實體字典和哈希標籤列表

for line in iter(my_tweet_file) 
    tweetionary = json.loads(line) 
    print tweetionary["entities"] 
    print tweetionary["entities"]["hashtags"] 

但我不能夠解析正確我對文本值感興趣(lin和Scot在下面的例子中)

[{u'indices': [41, 45], u'text': u'lin'}, {u'indices': [55, 60], u'text': u'Scot'}] 

我想填充從標籤列表中提取的文本字典。

謝謝,丹尼

+0

精確,需要什麼。從主題標籤list_中提取的文本字典 - 這個不清楚。字典意味着,它有關鍵:價值。需要什麼關鍵和價值?也許你只需要一個標籤列表? – stalk 2013-05-13 09:00:57

+0

你如何讓你的最終字典看起來像?你能舉一些例子鍵和值嗎?目前你只有標籤,可以存儲在列表中 – 2013-05-13 09:05:22

+0

第一步我想提取每一個hashtag,但是因爲我需要計算他們的頻率,我想這樣的字典:''代碼'fre​​q_hash = {'lin':1,'Scot':1,'Win':3}'code' – 2013-05-13 09:06:01

回答

0

你可以做到這一點很好地使用內置Counter()

from collections import Counter 

extracted = [{u'indices': [41, 45], u'text': u'lin'}, 
      {u'indices': [55, 60], u'text': u'Scot'}] 

count = Counter([d['text'] for d in extracted]) 

#Note: For python 2.x remove brackets around print statements 
print(count['lin']) 
print(count.most_common()) 

輸出:

1 
[('Scot', 1), ('lin', 1)] 
+0

我要記錄我自己關於計數器:無論如何,我仍然懷疑如何直接訪問文本值(林和蘇格蘭)從這樣一個簡單的印刷品:'代碼'印刷tweetionary [「實體」] [「hashtags」] .... ??? '代碼' – 2013-05-13 10:01:47

+0

我有一個for循環逐行閱讀我的推文信息,所以一旦我正在閱讀其他hashtags,如何更新提取的結構。循環結束時將使用count = Counter(...)行。 – 2013-05-13 10:06:10

+0

你用什麼命令從我的例子中獲取'extract'代碼片段?我認爲你可以用中的'for d替換'提取的'd'。可能'對於tweetionary [「實體」] [「主題標籤」] d',但很難說 – 2013-05-13 11:47:57