2012-06-20 53 views
1

我使用twython連接到Twitter API並檢索查詢。這裏是我所得到的一個例子:python twython tweet extraction

---START---- 

{u'next_page': u'?page=2&max_id=215397707' 
.... 
: 215397707794219008L, u'page': 1} 

----END---- 

我所感興趣的是實際的tweet這開始是這樣的:

u'text': u'@ilariargn devi fare un corso sul respiro! Sarebbero 7686879 euro, ci vieni? #perderetempo', u'from_user_name': 

所以之間「u'text‘:U’」一切, 「u'from_user_name'」。我試圖首先用鍵和值來獲取這些信息,因爲它是一本字典。不起作用。然後我試圖將字典轉換爲列表並使用字符串搜索來獲取位置。也不起作用。我如何獲得這些信息?

我想建議的解決方案,並收到以下消息:

tweet = json.loads(results)[u'text'] 
File "C:\Python27\lib\json\__init__.py", line 326, in loads 
return _default_decoder.decode(s) 
File "C:\Python27\lib\json\decoder.py", line 366, in decode 
obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
TypeError: expected string or buffer 

而對於第二個解決方案 - 如果我寫[t'text]我得到一個語法錯誤:

tweet = results[u'text'] 
KeyError: u'text' 

回答

3

好的。經過一些試驗後,我發現下面的解決方案來訪問實際的推文:

counter = 1 
for key, value in results.iteritems(): 
    if key == "results": 
     svalue = str(value) 
     while counter != -1: 
      tweetposstart = svalue.find("u'text'",counter) 
      tweetposend = svalue.find("u'from_user_name'",counter) 
      if tweetposstart != -1: 
       tweet = svalue[tweetposstart:tweetposend] 
       print tweet 
       counter = counter + tweetposstart 
      else: 
       counter = tweetposstart 
-1

你得到什麼是一個JSON對象:

import json 
tweet = json.loads(whatyouget)[u'text'] 

或者,如果你得到的DIC已經被解析,則:

tweet = whatyouget[t'text'] 
+0

嗨,Thx爲你評論,但它不起作用。我會在我的問題中發佈錯誤消息。 –