我使用twitter的API下载原始推文,以便我可以与他们一起玩。他们在给例如迭代循环看起来像这样(我加了一个条件,如果运行循环n次,这里没有显示):将原始推文字符串转换为Python中的JSON对象
iterator = twitter_stream.statuses.sample()
for tweet in iterator:
print (json.dumps(tweet))
break
这些命令输出格式正确整个JSON对象。
要提取从原始鸣叫JSON对象“文本”项目,我尝试使用获得(“文本”)运营的
txts = []
for tweet in iterator:
txts.append((json.dumps(tweet)).get("text"))
break
print (txts)
,但我得到一个错误说“AttributeError的:“海峡'object has no attribute'get'“
所以我搜索了一遍,发现了一个解决方案,他们将json.dumps(tweet)的所有输出写入文件,将json.loads(jsonfile)用于变量,并且试图使用它的.get(“文本”)操作符来加载文本:
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))'的输出并指出你想从那里得到什么确切的数据? – niemmi
您不应该需要执行转储然后加载。该信息可能已经在推特变量中。 –