为什么在编写错误处理程序以忽略使用python的Twitter-api返回的范围之外的unicode时,为什么会返回Unicode错误?

时间:2012-05-11 18:44:45

标签: python error-handling twitter

欢迎各位爱好者:

我正在调试与twitter-api集成的程序,其目的是搜索给定半径中的特定推文并将其返回到csv文件中。它工作....但有时它遇到“ UnicodeEncodeError:'ascii'编解码器不能编码位置0的字符u'\ u201c':序数不在范围内(128)”错误,但我调整了我的代码,以忽略来自其范围之外的twitter的Unicode数据。

那么为什么有时会出现这种错误?

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

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('Geotweets.csv',mode='w', encoding='utf-8',errors='ignore') as cache:
    writer = csv.writer(cache)
    for tweet in datares['results']:
        writer.writerow([tweet['text'], tweet['location'], tweet['created_at'], tweet['from_user']])

1 个答案:

答案 0 :(得分:0)

writerow发生隐藏转化。用例如自己编码数据。 tweet['text'].encode('ascii', 'ignore')