'ascii'编解码器无法编码位置0-4中的字符:序数不在范围内(128)

时间:2013-03-17 10:56:16

标签: python twitter

hiee我是蟒蛇游戏的新手,请帮助..

这是我得到的错误

'ascii'编解码器不能编码位置0-4的字符:序数不在范围内(128)

这是我的代码

import json
import urllib
import difflib

def main():
    f1 = open('tweet-stream.json','r')    
    Outputfile =open('newdata6.ods', 'w')
    count = 0

    for line in f1:
        d = json.loads(line)
        lang =  d["user"]["lang"]
        status_count = d["user"]["statuses_count"]
        id1= d['user']['id']
        name=d['user']['location']
        print >>Outputfile,"Language: "+ ','+ lang +','+ "Status_Count" +','+str(status_count)+','+str(id1)+','+str(name)


if __name__ == "__main__":    
    main()

2 个答案:

答案 0 :(得分:2)

Python中的Unicode指南是: http://nedbatchelder.com/text/unipain.html

遵循该演示文稿中的指南将解决您的问题。

答案 1 :(得分:0)

不是完整的答案,但请尝试替换

       print >>Outputfile,"Language: "+ ','+ lang +','+ "Status_Count" +','+str(status_count)+','+str(id1)+','+str(name)

通过

    print >>Outputfile,"Language: "+ ','+ lang +','+ "Status_Count" +','+unicode(status_count)+','+unicode(id1)+','+unicode(name)

甚至可以这样做:

print >>Outputfile, u"Language: ,%s,Status_Count,%s,%s,%s" % (lang, status_count, id1, name)

甚至更好:

text = u"Language: ,%(lang)s,Status_Count,%(count)s,%(id)s,%(name)s\n" % {
      "lang": lang,
      "count": status_count,
      "id": id1,
      "name": name
}

OutputFile.write(text)

还告诉我们错误的界限是件好事。据我所知,在您尝试使用“str”函数将数据转换为ascii时可能会发生错误。最有可能的是,json返回一个unicode字符串,它包含非ascii关键字。

另外在旁注中,您应该使用小写字母保留变量。大写字母用于类名等。而不是Outputfile,您应该写output_file