我正在尝试查找无数推文的纬度/经度信息。一个路径来鸣叫纬度/经度数据以JSON鸣叫是,按位置筛选twitter文件
{u'location:{u'geo':{u'coordinates:120.0,-5.0]}}}
我想能够检查每条推文是否存在此位置路径。如果确实如此,那么我希望稍后在函数中使用这些信息。如果没有,我想检查另一个位置路径,最后转到下一条推文。
这里是我目前检查这个路径是否存在的代码,如果有相应的数据。 'data'是我使用data.append(json.loads(line))方法打开的twitter文件列表。
counter = 0
for line in data:
if u'coordinates' in data[counter][u'location'][u'geo']:
print counter, "HAS FIELD"
counter += 1
else:
counter += 1
print counter, 'no location data'
我得到这个代码的KeyError错误。如果我只是执行下面的代码,但它不够具体,无法让我知道我需要的信息。
counter = 0
for line in data:
if u'location' in data[counter]:
print counter, "HAS FIELD"
counter += 1
else:
counter += 1
print counter, 'no location data'
有没有人有办法做到这一点。
下面是什么,我总做一些更多的背景,但上述概括了我坚持在那里。
背景:我有机会到12个十亿鸣叫,通过购买GNIP,被划分成多个文件。我试图逐个梳理这些推文,并找出哪些推文具有位置(纬度/经度)数据,然后查看相应的坐标是否落在某个国家。如果该推文确实属于该国家,我会将其添加到一个新的数据库中,该数据库是我的大型数据库的子集。
我已经成功创建了功能测试,如果经/纬度落在我的目标国家的边界框,但我有困难填充经/纬每个鸣叫有2个原因。 1)在每个json文件中存在多个long/lat数据的地方,如果它存在的话。 2)推文被组织在一本复杂的词典中,我难以操纵。
我需要能够遍历每条推文,看看是否存在不同位置路径的特定纬度/长度组合,以便我可以将其拉入并将其送入我的函数,以测试该推文是否源自我的国家出于兴趣。
我检查了它,但它似乎没有工作。实际的关键是'坐标'。当我读取文件时,它变成了u'coordinates',因为它是Unicode。在我的第二个例子中,我使用了密钥u'location',它是数据[counter]中的顶层密钥,它工作正常。我似乎无法调用子图层字典密钥。也许这不是严格考虑的关键?我尝试过使用try-except,它似乎可行,因为它允许我通过KeyError错误,但我不知道它是否像if-else语句那样工作,这似乎是检查多个位置路径的最佳方法。 – CAVHaupt
我检查了数据[counter] [u'location'] [u'geo'] _中的以下路径:_u'coordinates',并且我得到一个True语句,但只有在该特定推文中存在密钥时才有效。对于没有这个路径的推文,我没有得到一个False语句,但是我得到一个KeyError。 – CAVHaupt