在python中编码错误

时间:2013-06-29 16:52:29

标签: python twitter utf-8 ascii

我试图解析Twitter数据。我检索了数据并将其存储在一个名为的文件中 '的 twitterdata

f = open('twitterdata','r')
for line in f:
    jsonline = json.loads(line)
    for key in jsonline:
        print str(jsonline[key]).encode('utf-8')

即使在使用编码('utf-8')后我也收到错误:

print str(jsonline[key]).encode('utf-8')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-17: ordinal not in     range(128)

1 个答案:

答案 0 :(得分:4)

删除str(),或将其更改为unicode()

print jsonline[key].encode('utf-8')

print unicode(jsonline[key]).encode('utf-8')

在Python 2.x中,str()尝试将其内容转换为8位字符串。由于您传递了Unicode对象,因此在达到ascii调用之前,它使用默认编码(.encode('utf-8'))并失败。如果您获得的数据都是文本,那么使用unicode()是多余的,但如果其中一些是整数,则会很有用,所以我建议使用后者。