2013-06-29 55 views
1

我试图解析twitter数据。我检索到的数据,甚至使用编码( 'UTF-8')后,将其存储在一个名为 'twitterdata'python中的编码错误

f = open('twitterdata','r') 
for line in f: 
    jsonline = json.loads(line) 
    for key in jsonline: 
     print str(jsonline[key]).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) 
+0

您使用的是什么版本的Python,2.x或3.x? Unicode处理在两个版本之间发生了变化,因此了解您使用的是哪个版本非常重要,因此我们可以为您提供正确的答案。 – rmunn

+0

我正在使用python 2.7.3。使用pycharm IDE –

回答

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()在这里是多余的,如果你得到的数据是全部文本,但是如果其中的一些是整数,这将是有用的,所以我推荐后者。

+1

它工作。谢谢! –