【发布时间】:2017-08-09 18:15:40
【问题描述】:
我正在使用 twitter 的 API 下载原始推文,以便我可以使用它们。他们在示例中给出的迭代器循环看起来像这样(我添加了一个 if 条件来运行循环 n 次,此处未显示):
iterator = twitter_stream.statuses.sample()
for tweet in iterator:
print (json.dumps(tweet))
break
这些命令以正确的格式输出整个 JSON 对象。
为了从原始推文 json 对象中提取“文本”项,我尝试在
上使用 .get("text") 运算符txts = []
for tweet in iterator:
txts.append((json.dumps(tweet)).get("text"))
break
print (txts)
但我收到一条错误消息“AttributeError: 'str' object has no attribute 'get'”
所以我四处搜索并找到了一个解决方案,他们将 json.dumps(tweet) 的所有输出写入一个文件,使用 json.loads(jsonfile) 到一个变量,并尝试使用 .get("text" ) 运算符来加载文本:
fl = open("ipjson.json", "a")
for tweet in iterator:
fl.write(json.dumps(tweet))
break
fl.flush()
decode = json.loads(fl)
for item in decode:
txt = item.get("text")
txts.append(txt)
print (txts)
但这给了我另一个错误说“TypeError:JSON对象必须是str,而不是'TextIOWrapper'”
我做错了什么?有没有更好/更简单的方法从原始推文 JSON 对象中提取文本?
【问题讨论】:
-
您能否提供
print(json.dumps(tweet))的输出并指出您想从那里获得哪些确切数据? -
您不需要进行转储然后加载。该信息可能已经在推文变量中。
标签: python json python-3.x twitter twitter-oauth