1

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

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

即使在使用encode('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)
4

1 回答 1

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()是多余的,但如果其中一些数据是整数,则将很有用,因此我推荐后者。

于 2013-06-29T17:06:24.187 回答