1

问候热心的小伙伴们:

我正在调试一个与 twitter-api 集成的程序,其目的是搜索给定半径内的特定推文并将它们返回到 csv 文件中。

它可以工作......但有时它会遇到“KeyError:'location'”错误,但当我检查它时没有关键错误,所以任何人都可以解释它为什么返回这个错误?

如果您取消注释 pprint 语句以查看来自 twitter-api 的原始返回数据,则很明显“位置”是正确的键,有时有效,但有时无效,并返回上述错误。

下面是使用注释中给出的测试输入运行它的代码:

import urllib2, json, pprint, codecs, unicodedata, csv
## test coordinate input: 29.762778,-95.383056
## test radius 10
## test query: tebow
##Initial user input
city = raw_input("Please enter to 6 decimal places the city\ncoordinates to be searched ex. lat,long: ")
radius = raw_input("Please enter the numeric value of the\nradius in miles you'd like to search ex. 10: ")
term= raw_input("Please enter the search term you wish to query ex. tebow: ")

u = urllib2.urlopen('http://search.twitter.com/search.json?q='+term+'&geocode='+city+','+radius+'mi&page=1&rpp=20')
datares = json.load(u)
##pprint.pprint(datares)

with codecs.open('Gtweets.csv',mode='w', encoding='ascii',errors='ignore') as cache:
    writer = csv.writer(cache)
    for tweet in datares['results']:
        writer.writerow([tweet['text'].encode('ascii', 'ignore'), tweet['location'].encode('ascii', 'ignore'), tweet['created_at'].encode('ascii', 'ignore'), tweet['from_user'].encode('ascii', 'ignore')])
4

1 回答 1

0

由于您无法控制 Twitter 是否包含该位置,因此不要依赖该字段是否存在。不要使用方括号进行查找,而是使用dict.get

tweet.get('location', '<unknown location>').encode('ascii', 'ignore')
于 2012-05-11T20:31:54.183 回答