0

hiee ima newbee 在 python 领域请帮助..

这是我得到的错误

“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()
4

2 回答 2

2

Python 中 Unicode 的一个很好的指南在这里: http: //nedbatchelder.com/text/unipain.html

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

于 2013-03-17T15:05:48.130 回答
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

于 2013-03-17T14:24:20.167 回答