1

仲間の愛好家にご挨拶:

特定の半径で特定のツイートを検索し、csv ファイルで返すことを目的とする twitter-api と統合されたプログラムをデバッグしています。

それは機能します....それでも、「 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 に答える