我使用一些推特数据,通过监控推特流获取数据,然后将结果保存在* .txt文件中
我试图用python操作这个txt文件,因为我使用了json.loads()指令,文件中的每一行都保存了twitter流结果,这样我得到了每个文件行一个json对象。
for line in twitter_file
data = json.loads(line)
json对象(一个文件行的一个json对象)被加载到一个名为“data”的变量中
Everyting正在那里工作,当我尝试访问“data”json对象中的元素时,我可以这样做,例如,如果我能看到place元素,我可以用data [“place”]来做,所以我明白了:
"place":{
"id":"00a961d91f76dde8",
"url":"https:\/\/api.twitter.com\/1.1\/geo\/id\/00a961d91f76dde8.json",
"place_type":"city",
"name":"Capital - Corrientes",
"full_name":"Capital - Corrientes",
"country_code":"AR",
"country":"Argentina",
"contained_within":[]
}
我可以访问“place”元素,如果我执行打印数据[“place”],我可以看到上面显示的文字。
当我尝试访问特定密钥就位时,问题出现了,
我试着这样做
data["place"]["place_type"]
我正在等待获得“城市”值,但我无法做到,我收到以下错误:TypeError: "NoneType" object has no attribute '__getitem__'
我还尝试了其他方式来显示键值对,其中包含以下内容:
for key,value in data["data"].items()
print key
但我没有得到结果
我也试过
print data["place"].keys()[0]
要打印第一个元素,但它也不起作用。我收到以下错误消息:AttributeError: 'NoneType' object has no attribute 'keys'
似乎我的数据[“place”]并没有被Python视为字典,这就是我想的,但我不确定,我是Python的新手,所以任何评论都会非常有帮助对我来说。
答案 0 :(得分:0)
您正在循环遍历文件并将每行加载为JSON。 这些JSON对象中的一些将place
设置为字典,其他将其设置为None
。
每当您刚刚加载一行,其中place
键设置为None
时,您就会获得AttributeError
例外。
您需要先测试一下:
place = data['place']
if place is not None:
print place['place_type']