python twython tweet提取

时间:2012-06-20 11:02:15

标签: python dictionary

我正在使用twython连接到Twitter API并检索查询。以下是我得到的一个例子:

---START----

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

----END----

我感兴趣的是实际的推文,它是这样开始的:

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'

2 个答案:

答案 0 :(得分:2)

确定。经过一些试验,我找到了以下解决方案来访问实际的推文:

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 :(得分:0)

你得到的是一个json对象:

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

或者,如果你已经解析了dic,那么:

tweet = whatyouget[t'text']