我正在使用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'
答案 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']