【发布时间】:2018-05-22 13:14:05
【问题描述】:
在尝试了一些可能的解决方案并遇到各种错误后,我感到非常困惑,这些错误只会让我陷入困境。我有一个函数可以抓取一条推文,将其放入字典中,然后使用dumps 将字典写入文件,如下所示:
jsonFile = {}
jsonFile["tweet"] = tweet
jsonFile["language"] = language
with open('jsonOutputfile.txt', 'w') as f:
json.dump(jsonFile, f)
然后我有另一个 python 文件,它有一个函数,如果我想在其他地方使用它,它将返回这个 jsonOutputfile.txt 的值。我是这样做的:
with open('jsonOutputfile.txt') as f:
jsonObject = json.load(f)
return jsonObject
这个函数位于我的本地主机上。上面两个与保存和检索 JSON 文件有关的函数与我下面的其余函数是分开的,正如我希望的那样。
我有另一个函数可以使用 python 请求检索返回状态的值,如下所示:
def grab_tweet():
return requests.post("http://gateway:8080/function/twittersend")
然后在抓取推文后,我想操作它,我想使用我应该从这个请求中收到的 JSON 来操作它。
r = grab_tweet()
data = json.dumps(r.text)
return data.get('tweet')
我希望上面的这个函数只返回与我在保存和加载它时收到的 JSON 中的 tweet 键关联的值。但是,我不断收到以下错误:AttributeError: 'str' object has no attribute 'get',我对此感到困惑,因为根据我的理解,使用json.dumps() 应该会创建一个我可以调用的 JSON 有效字符串。当我将其传输到文件或从文件传输时,或者当我收到我的请求时,是否存在编码错误?
感谢任何帮助。
编辑:
这是我使用r.text 时来自我的requests.post 的响应示例,看起来响应中也有一些Unicode,所以我在推文部分的末尾放了一个示例。 (这看起来也不像我的问题所围绕的 JSON。至少应该有双引号,没有 U 对吗?):
{u'tweet': u'RT THIS IS THE TWEET BLAH BLAH\u2026', u'language': u'en'}
【问题讨论】:
标签: python json python-requests